2013-04-10 11 views
6

Zbudowałem więc to, co, jak miałem nadzieję, stało się prostą grą na Androida. Najpierw zbudowałem wersję internetową, aby ją uruchomić (http://scolvin.com/ballgame), a następnie przeniosłem ją do PhoneGap i stosowałem akcelerometry do sterowania grą. Jedynym problemem (i jest to problem z zatrzymaniem show) jest to, że wynik jest niesamowicie powolny (aktualizacje domyślam się raz na sekundę zamiast kiedykolwiek 20ms ish).Gry PhoneGap, płótno i powolny javascript

Czy tak powolny jest phonegap, bez aktualnego rozwiązania? A może brakuje mi złotej kuli?

Gra używa easeljs i box2d-web.

Co jest dziwne, wygląda na to, że działa z rozsądną szybkością na Androidzie Chrome, ale bardzo wolno działa na "przeglądarce" Androida (co, jak się wydaje, jest oparte na firefox?) Oraz w phonegapie, który prawdopodobnie używa tego samego renderera html/przerywacz js.

Próbowałem uprościć grę, pozbywając się tak dużo, jak tylko mogę, używając setInterval, a nie accelerometer.watchAcceleration wszystko bezskutecznie.

Odpowiedz

1

Czy problem z wydajnością dotyczy renderowania lub odczytu akcelerometru? Może mógłbyś stworzyć tryb demo, aby sprawdzić, jak zachowuje się bez wkładu użytkownika.

+0

Przepraszam, powinienem być jaśniejszy. Zrobiłem to, używając 'setInterval' zamiast' watchAcceleration', aby rozpocząć każdy krok. – SColvin

2

Zamiast setInterval() dla FPS rzeczy, należy użyć requestAnimationFrame() To jest o wiele bardziej wydajny

iOS i Android 3+ 5+ wykorzystać sprzętową akcelerację płótnie, więc trzeba będzie conajmniej tych urządzeń do solidna wydajność. Wszystko przed iOS 5.0 i Android 3.0 będzie używać procesora za pomocą renderowania oprogramowania.

więc trzeba o tym pamiętać