GLBasic forum

Main forum => Bug Reports => Topic started by: mangoo on 2011-Mar-11

Title: IPhone MouseState Problem
Post by: mangoo on 2011-Mar-11
hi,

habe bei meinem iphone spiel das problem, dass wenn der finger ausm bild ist, also man z.b. den finger zu weit über den bildschirm streicht und über den rand rausgeht, dass dann wenn der finger zurückgeht (ohne abzuheben), dieser nicht mehr erkannt wird.

erst wenn ich den finger abhebe und aufsetze geht es wieder.

ich erinner mich daran dass hier schon mal was ähnliches gepostet wurde, finde es aber leider nicht mehr.
kann mir da wer aushelfen?

heute abend werde ich auch ein beispiel posten können.


Gruß
mangoo
Title: Re: IPhone MouseState Problem
Post by: mangoo on 2011-Mar-11
Soooo


selbst mit Systempointer FALSE kommt der Fehler:


Hier ein Beispielprogramm.


Ein Rechteck wird immer an der Mouseposition angezeigt. wenn man nach oben ( zur Kamera ) hingeht
kommt irgendwann als x immer 65 und der rest 0, bei allen mäusen

geht man mit dem finger dann ohne abzusetzen zurück ändert sich nix

Der Fehler tritt nur in 95% der Fälle auf, unten tritt er nie auf. Man kann auch aus dem Rand oben raus und über einen anderen Rand wieder rein, dann funktioniert es wieder.


Code (glbasic) Select


GLOBAL mx,my,mb1,mb2
SYSTEMPOINTER FALSE


WHILE NOT KEY(01)
CLEARSCREEN RGB(0,0,0)

FOR i = 0 TO GETMOUSECOUNT()-1
LOCAL tx,ty,tb1,tb2
SETACTIVEMOUSE i
MOUSESTATE tx,ty,tb1,tb2

PRINT tx + " " + ty + " " + tb1,0,i*15

IF tb1
mx = tx
my = ty
ENDIF
NEXT


DRAWRECT mx,my,100,100,RGB(255,0,0)
SHOWSCREEN

WEND
Title: Re: IPhone MouseState Problem
Post by: backslider on 2011-Mar-11
Soooo...

Also erstmal: SYSTEMPOINTER TRUE dürfte kein Problem machen!

Die Frage wäre erstmal, willst du nur einen Finger oder Multitouch benutzen?
Das bei dir sieht mir ein bissel komisch aus.

Probier doch für den Anfang mal mit nur einem Finger
Code (glbasic) Select

GLOBAL mx,my,mb1,mb2
WHILE TRUE
CLEARSCREEN RGB(0,0,0)
    MOUSESTATE mx,my,mb1,mb2

    PRINT "mx:" + mx + ", my:" + my + ", mb1:" + mb1,0,0

DRAWRECT mx,my,100,100,RGB(255,0,0)
SHOWSCREEN
WEND


EDIT: Wenn du mehr als einen Finger als Input benutzen möchtest, solltest du das so tun;
Code (glbasic) Select

TYPE TMouse
x
y
b1
b2
ENDTYPE

LOCAL mouse[] AS TMouse //Das leere Array für die Finger
DIM mouse[GETMOUSECOUNT()] //Setze die Größe des Arrays auf die Anzahl der maximalen Finger

SYSTEMPOINTER TRUE


WHILE TRUE
CLEARSCREEN RGB(0,0,0)
FOR m=0 TO GETMOUSECOUNT()-1 //-1, weil wir ja von 0 anfangen, zu zählen
MOUSESTATE mouse[m].x, mouse[m].y, mouse[m].b1, mouse[m].b2 //Update alle Finger
NEXT

FOREACH M IN mouse[] //Tu dies für alle Finger
IF M.b1 THEN DRAWRECT M.x,M.y,100,100,RGB(255,0,0)
NEXT

SHOWSCREEN
WEND


Wenn du Fragen hast, nachdem du das ausprobiert hast, dann frage gerne! ;)
Title: Re: IPhone MouseState Problem
Post by: mangoo on 2011-Mar-11
Hi,

danke für den wohlgemeinten Tipp. Aber auch mit dem Programm klappt es nicht. Sobald ich über den Rand hinausgehe und zurückgehe wird da nichts mehr angezeigt.


Ich hab die Probleme sowohl im Multi als auch im Single Touch ohne SetActiveMouse.

Bei meinem Spiel handelt es sich um ein kleines Rennspiel, das bisher über die Orientierung des Handys gesteuert wurde. Alternativ zur Orientierung kann man es per Touchscreen spielen.

Links lenken, rechts Turbo etc.


(http://feuerware.com/temp/irace3dmulti.png)


Wenn jetzt der Spieler zu weit mit dem Daumen links landet ( was häufig vorkommt), dann kann er plötzlich nicht mehr lenken, weil keine Mousekoordinaten mehr funktionieren.
Title: Re: IPhone MouseState Problem
Post by: backslider on 2011-Mar-12
Und das liegt mit 100%iger Sicherheit an GLBasic?
Ich kann dieses Problem nicht nachvollziehen.
Title: Re: IPhone MouseState Problem
Post by: BumbleBee on 2011-Mar-12
Hallo

Ich hab leider kein iPhone und kann das nicht testen, aber kannst du das nicht einfach begrenzen?
Also z.B.
Code (glbasic) Select

   MOUSESTATE mx, my, b1, b2
   IF mx<10 THEN mx=10
   DRAWRECT mx,my,20,20,RGB(255,0,0)


So kann man dann halt gar nicht erst zu weit nach links oder über den Rand kommen. Aber keine Ahnung. Vielleicht hab ichs auch falsch verstanden was du meinst.  =D

Cheers

Title: Re: IPhone MouseState Problem
Post by: mangoo on 2011-Mar-12
Hm ne das hilft leider nicht, der Finger geht ja trotzdem übern Rand :-)
Title: Re: IPhone MouseState Problem
Post by: BumbleBee on 2011-Mar-13
Hehehe ich meinte natürlich das, was der Finger bewegt nicht an den Rand kommt und damit vielleicht den Fehler verursacht und nicht den Finger.  =D Aber wie gesagt ich hab kein iPhone. Wir telofonieren hier sogar noch mit Rauchzeichen.   =D

Quote from: mangoo
  ich erinner mich daran dass hier schon mal was ähnliches gepostet wurde, finde es aber leider nicht mehr.

Der Typ hatte da paar Fragen über die Maus. Vielleicht hast du das ja gesucht oder es hilft dir weiter.  :)
 
   http://www.glbasic.com/forum/index.php?topic=4876.msg37374#msg37374

Cheers
Title: Re: IPhone MouseState Problem
Post by: Kitty Hello on 2011-Mar-15
Da kann ich nichts machen. Ich übergebe wie Werte so wie ich sie bekomme an GLBasic. :(

Gibt es ein Programm bei dem das geht?

Schreib mal hin, ob die Maustaste gedrückt ist für alle "Mäuse".
Title: Re: IPhone MouseState Problem
Post by: mangoo on 2011-Mar-15
Klar, das geht bei vielen normalen Iphone Spielen :-)


Puppet Wars z.B. hat links so ein Steuerkreuz, da ists kein Problem wenn man mit dem Finger zu weit raus geht. Das Steuerkreuz springt einfach auf Null Position sobald man aus dem gültigen Touch Bereichs des Iphones ist und damit keine Eingaben mehr kommen. Bewegt man dann den Daumen zurück ohne abzusetzen  klappt es wieder sobald der Finger im gültigen Bereich ist.


Die Maus ist bei GLbasic nicht mehr gedrückt, sobald man aus dem gültigen Bereich ist. Das ist ja soweit auch in Ordnung.

Kommt man wieder zurück, ists leider immer noch nicht gedrückt. Der kriegt dann solange keine gültigen Werte, bis man über einen der 3 anderen Ränder drüber geht, dann geht es auf einmal wieder.
Title: Re: IPhone MouseState Problem
Post by: mangoo on 2011-Mar-15
aaaah

mir fällt gerade auf


das problem tritt dann auf, wenn man über den rand geht und nur EINEN finger benutzt

wenn ich einen oder mehrere andere finger in der zeit drauf habe, dann geht es ohne probleme. wird da irgendwas unterschiedlich gehandlet?
Title: Re: IPhone MouseState Problem
Post by: Kitty Hello on 2011-Mar-16
nein. Ich habe nur eine Liste die ich mit touchesbegin fülle und bei touchesend wieder rausnehme, bzw bei touchesmoved aktualisiere :(
Title: Re: IPhone MouseState Problem
Post by: backslider on 2011-Mar-16
Also auf meinem Pre ist das nicht so, wenn ich den Finger aus dem Display schiebe und dann wieder rein, direkt auf nen Button am Rand, dann wird der auch gedrückt...
Ich glaube irgendwie nicht daran, dass das an GLBasic liegt. Hm... Komisch.
Title: Re: IPhone MouseState Problem
Post by: mangoo on 2011-Mar-16
Hm ok, beim Palm Pre teste ich Mal heute Abend.
Seltsamerweise ist das ja auch nur bei einer einzigen Seite vom Handy.

Oder kann es noch sein, dass irgendetwas bei Fokusverlust passiert. Also wenn gar kein Finger mehr drauf ist?

Ansonsten: gibt es vlt eine Möglichkeit statt OrientationRight/Left  beim Iphone die jeweils andere Orientierung zu nehmen? Finde ich zwar nicht so schön aber wenn nix hilft.

Dann hätte ich das Steuerkreuz (bei dem der Finger ja die ganze Zeit gedrückt ist und bewegt wird)auf der anderen Seite. Auf der anderen Seite gibt es keine Problem wenn der Finger übern Rand geht.

Hatte auch schon zeitweise mal das Steuerkreuz auf der rechten Seite, dass man dann mit der rechten Hand lenkt, aber das war vom Feeling gar nicht gut.