PDA

View Full Version : Obrada touch dogadjaja



Juga
03-11-2009, 01:28
Radim jednu 3d aplikaciju i trenutno se patim sa obradom touch dogadjaja.
Ako je neko radio u Maya ili hnekom slicnom 3d paketu, orbitiranje u sceni se izvodi pomocu misa (levi, srednji i desni za rotaciju, pan i zoom) + alt taster.

Hteo bih da napravim slican mehanizam na IPhone-u i to:
- jedan dodir -> rotacija
- 2 dodira zoom ili pan. Ako je pomeraj priblizno paralelan onda radim pan u suprotnom zoom.

E sad problemi.. sve radi ali pomalo traljavo.
rotacija radi odlicno
pan i zoom rade takodje ali cesto ne uhvatim oba dodira veca samo prvi pa mi aplikacija ode na obradu rotacije umesto pan/zoom.

Pitanje glasi.. da li neko moze da mi napise redosled touch dogadjaja u sledecem scenariju:
- jednim prstom pritisnem ektran
- drugim prstom pritisnem ekran
- pomeram oba prsta
- otpustim oba prsta

Nikola
06-11-2009, 16:29
Malo mi je čudno da se mučiš sa touch događajima a da si krenuo da radiš 3d aplikaciju. To u stranu, ima jako lepo objašnjene o touch događajima u "Beginning iPhone Development" knjizi.
Video sam i u drugom thread-u da se mučiš sa nalaženjem home directory-a tako da ti savetujem da porčitaš gore pomenutu knjigu pošto je to, i još mnoštvo korisnih tema obrađeno. Jeste da je knjiga malo deblja ali biće ti lakše ako ne budeš morao da vijaš snippet-e po netu.

Kad sam već počeo da pišem, nije li jednostavnije pinch to zoom in/out?

1024
06-11-2009, 16:41
Cudno nije, ako covek prelazi na novu platformu logicno je da mu stvari specificne za platformu predstavljaju problem.

Inace, pinch nije definisan na iPhone-u, vec mora da se prepozna rucno uz pomoc dva dodira. On je to i rekao: ako se dodiri pomeraju paralelno onda ce da ih posmatra kao pan, a ako ne (to je onda pinch) ce da ih posmatra kao zoom.

Nikola
06-11-2009, 16:54
Nisam razmišljao o toj mogućnosti, tako da se povlačim izjavu da mi je čudno. :)

Znam da pinch nije definisan, razumeo sam ga da želi da zumira sa double tap, verovatno sam zamenio dva prsta sa dva tap-a (nisam kafu popio). U svakom slučaju savet za čitanje knjige stoji, pošto sadrži mnogo iphone specific tema.

1024
06-11-2009, 20:39
E da, tu knjigu sam video... Imaju (za konkretan slucaj) poglavlje koje prica o touchevima.

Sad, kod toucheva postoje tri (ili 4 ako racunamo canceled) touch dogadjaja: touchesBegan, touchesMoved i touchesEnded. Jedino pitanje tu je sta ce tacno da se desi kad imas jedan prst pritisnut i pritisnes drugim. Ja pretpostavljam da ce da se desi novi touchesBegan, ali nisam siguran.

Inace, kada se dodirne sa dva prsta (valjda) se desi touchesBegan, pri cemu touches ima dva elementa, za dva dodira.

Evo reference :)

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIResponder_Class/Reference/Reference.html

Juga
07-11-2009, 02:19
OpenGL poznajem jako dobro i iza sebe imam gomilu PC aplikacija koje koriste OpenGL, tako da mi to ne predstavlja problem. IPhone mi je zanimljiv jer je to prva iole ozbiljna platforma koja poseduje solidne 3d mogucnosti i izvrsava native code.

Da se vratim na temu... Skontao sam kako radi..
Svaki touch generise touchBegan. Svaki touch je perzistentan za vreme svog zivota radi lakseg raspozvananja u aplikaciji prilikom obrade Began, Moved i Ended
Kao sto sam vec napisao... 3 osnovne funkcije svakog 3D viewera su rotacija, panning i zoom. Ja sam to hteo da uradim na sledeci nacin:
rotacija - jedan prst pomeras po ekranu i rotiras se oko scene gore-dole/levo-desno
pan - dva prsta na ekranu pomeras paralelno. npr:
*----->

*---->
zoom - dva prsta na ekranu pomeras u suprotnim pravcima
<----* *---->
ili
*----> <----*

1024
07-11-2009, 12:34
U tom slucaju ova tema moze da se zatvori.

Juga, da li bi mogao da mi napises ukratko u kom su odnosu iPhone-ov OpenGL ES i "obican" OpenGL? Posto na fakultetu trenutno ucim OpenGL pa me interesuje koliko je to slicno/razlicito na iPhone-u.