Autor | Zpráva | ||
---|---|---|---|
Roman! Profil |
#1 · Zasláno: 26. 10. 2017, 12:37:36
Ahoj,
vytvářím hru pro android za pomoci js a cordovi a narazil jsem na problém při použití události touchstart, vždy při vyvolání této události se aplikace na pár setin vteřiny zasekne. Přikládám příklad: Živá ukázka (nutné testovat na dotykovém zařízení nebo ho simulovat v prohlížeči) Vyvolání události dotyk na čtverec způsobí zadrhnutí. Prozatím jsem to vyřešil použitím touchend což bohužel taky není ideální. Je nějaké lepší řešení? Díky. |
||
Keeehi Profil |
#2 · Zasláno: 26. 10. 2017, 16:10:57
Já spíš vidím problém s funkcí setInterval. Ono totiž nikde není zaručeno, že se spustí přesně po dvaceti milisekundách. Můžeš si uložit čas posledního spuštění a odečíst od něj aktuální. Tím zjistíš, jak moc je to jinak oproti 20ms. Jednoduše se z toho dá vypočítat poměr kterým stačí vynásobit krok. Pokud to zase "zamrzne" tak po obnovení to bude o x pozic dál a ne jen o jednu. Bude to tedy vypadat jako dočasně snížený framerate, ale objekt bude na správné pozici, jako by se vůbec nic nestalo.
|
||
Roman! Profil |
#3 · Zasláno: 26. 10. 2017, 18:32:54
Problém je opravdu u touchstart, pokud požiji události jako mousedown nebo keydown funguje to spolehlivě, setInverval je zde OK.
|
||
Roman! Profil |
#4 · Zasláno: 26. 10. 2017, 19:57:36
Vyřešeno.
V obslužné metodě události stačí zavolat preventDefault(). |
||
Časová prodleva: 6 let
|
0