2014-02-09 74 views
2

我正在構建一個基於畫布的網頁遊戲,在桌面上以60fps的速度運行。它也運行在60fps在android上的鉻。我將它加載到phonegap應用程序中,並且fps計數器仍然讀取60fps,但屏幕每隔幾個刻度就會繪製一次。是否有一個刷新率限制器,迫使webview只能每秒一次地繪製?甚至當網站宣稱它的重繪速度爲60fps時,還有哪些其他的東西可能會限制我的繪圖?Phonegap畫布低刷新率

+0

也許你會有更好的表現與以下插件(需要全屏畫布,並沒有實現所有的畫布功能)https://github.com/phonegap/phonegap-plugin-fast-canvas – QuickFix

+0

你是否控制重畫與'requestAnimationFrame'? – fny

+0

我會研究fastcanvas,但我希望我不會。是的,我正在使用requestanimationframe – Dested

回答

5

默認情況下,PhoneGap將使用內置的默認瀏覽器,該瀏覽器不是Chrome瀏覽器,除非您正在使用KitKat,但這是一個不同的故事。

現在我有問題,我自己甚至像得到一個用戶簽名小畫布項目的默認瀏覽器,但是那是因爲火災的TouchEvent率低......

但無論如何,可行的解決方案將是強制的PhoneGap使用而不是默認的一個WebChromeClient,你可以做到這一點的super.loadUrl調用之前加入如下一行:

appView.setWebChromeClient(new WebChromeClient()); 

如果強制使用WebChromeClient確保您啓用JavaScript,本地存儲,如果你需要它,等等。也有可能一些PhoneGap插件會中斷。如果你的遊戲純粹是HTML5而不是我建議的考慮,不要爲你的android版本使用phonegap,那麼構建一個簡單的WebView應用程序在Android中很容易。

此外,如果你的遊戲打算使用加速度傳感器,看看什麼是瀏覽器的原生支持:Can I Use resources

而且我一定會讀THISTHIS

希望它幫助。 Emil

+0

這是一個非常有趣的回覆。爲了記錄,我正在使用kitkat。它在webview中運行chrome。奇怪的是,它運行在phonegap之外的60fps,以及手機間隙內60fps(通過xStats輸出),唯一的區別是它只是以大約2fps的速度對我進行物理重繪。我還沒有看到電話之上的其他抽象層嗎?這是一個在手機上缺乏特定功能的畫布的常見行爲嗎? – Dested

+0

是的,我很害怕,我進一步閱讀,似乎是PhoneGap的一個問題,無法資助確切的爲什麼。看起來,甚至連Andorid 4.4默認瀏覽器都不支持WebGl,而Chrome則支持(在瀏覽器中打開Chrome並輸入:about:// gpu)。您可以嘗試強制使用GPU,並在這裏顯示技巧:http://davidwalsh.name/translate3d。爲了能夠給你更精確的文檔,我做了更深入的挖掘,並且我可以證實,甚至連KitKat Chromium webview都支持WebGL(請參閱:http://buff.ly/JjQSm8) –

+0

Whit所有這些說法並放在一起我認爲你應該嘗試尋找替代解決方案。 QuickFix建議的FastCavans或由我自己建議的Intel XDK(我現在正在下載以供玩耍)。此外,我忘了提及,它看起來100%愚蠢,但請確保您已在您的Manifest中啓用硬件加速

1

不幸的是,新的Webview並沒有與Chrome相同的功能。這些差異之一是Chrome使用的WebGL 3D畫布。查看here瞭解新Webview和Chrome之間功能差異的列表。

+1

@Dested - 另見https://code.google.com/p/chromium/issues/detail?id=315111。 – JSON