Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Folkow

Založen: 29. 07. 2007 Příspěvky: 61
|
Zaslal: 25. červenec 2008, 13:35:41 Předmět: DelphiX - DXInput a Keyboard |
|
|
Čus chlapy,
potřeboval bych pomoct s jedním malým problémem. Mám objekt, který chci posouvat o určitou vzdálenost při stistku jedné z šipek, ale v následujícím kódu se děje to, že se neposune o část při jednom stisknutí, ale posouvá se furt, jelikož je to v cyklu Timeru.
kód: |
if isDown in input.Keyboard.States then inc(player_y);
if isUp in input.Keyboard.States then dec(player_y);
if isLeft in input.Keyboard.States then dec(player_x);
if isright in input.Keyboard.States then inc(player_x);
input.Update;
|
Nevím jestli existuje přímo nějaká funkce na Hit, ale to cyklování je šílené. Přemýšlel jsem, že bych si udělal nějakou proměnnou, do níž bych zapsal hodnotu 1, když je stisknuto a pak dle podmínky incrementoval nebo neicrementoval pozice, pokud by tlačítko nebylo stisknuto, hodnota proměnné by se změnila na hodnotu, který by říkala, že klávesa stisknutá není.
Nepřijde mi to jako nejlepší nápad, tak jsem se chtěl zeptat, jak to řeší jiní, doufám, že s DelphiX má někdo zkušenosti a poradí.
Děkuji _________________ http://www.e-telka.cz | http://www.iphonethemeszone.com |
|
Návrat nahoru |
|
 |
Hardwire
Založen: 04. 09. 2007 Příspěvky: 117
|
Zaslal: 26. červenec 2008, 08:16:40 Předmět: |
|
|
Buď se to řeší událostma, to si ale už nepamatuju, jak ty v DelphiX fungovaly - pokud DXDraw bude mít pořád focus (tzn. na formuláři nebudou žádný další tlačítka, textboxy, atd.), tak by to mělo jít udělat v události DXDraw.OnKeyDown.
Nevím už, jak je to v Delphi s vláknama, ale možná se může stát, že by se ta událost OnKeyDown vyvolala v průběhu herního cyklu, a pak by to mohlo nadělat neplechu, tak na to pozor.
Druhá možnost, pro hry možná lepší, je pamatovat si Keyboard.States z předchozího framu. Potom pokud v předchozím framu nebyla nějaká klávesa stisknutá a v tomhle framu je, tak to vezmeš jako událost zmáčknutí týhle klávesy a zpracuješ ji. Výhodu to má v tom, že nemůže nastat problém se synchronizací jako u předchozího řešení. |
|
Návrat nahoru |
|
 |
posila
Založen: 29. 07. 2007 Příspěvky: 201
|
Zaslal: 26. červenec 2008, 10:28:34 Předmět: |
|
|
anebo se muzes na DelphiX input vykaslat a chytat udalot OnKeyDown formularem...
nicmene, DelphiX je, mam takovy pocit, dost stara komponenta, ktera uz neni ve vyvoji. Doporucil bych spis prejit na neco, co se porad aktualizuje - treba Asphyre. Kdysi davno se to jmenovalo PowerDraw a uz tenkrat to bylo imho lepsi nez DelphiX |
|
Návrat nahoru |
|
 |
franz
Založen: 30. 07. 2007 Příspěvky: 1325
|
Zaslal: 27. červenec 2008, 18:52:45 Předmět: |
|
|
Folkow: Objekt se ti posouvá tak dlouho, dokud držíš klávesu |
|
Návrat nahoru |
|
 |
Folkow

Založen: 29. 07. 2007 Příspěvky: 61
|
|
Návrat nahoru |
|
 |
|