2016-09-25 28 views
0

我們的JavaScript遊戲我們有其中「touchmove」事件是緩慢和「janky」,直到一個方向變化時他們再次成爲平滑的問題。的Android瀏覽器touchmove間歇性緩慢,直到方向改變

當遊戲做了很多工作,比如加載關卡時,速度緩慢。

這裏是一個視頻,顯示緩慢接觸移動的行動,以及修復問題的方向改變。

https://youtu.be/7rSqkJuOQjc


以下警告不會出現在日誌中

處理的「touchmove」輸入事件被推遲了141毫秒,由於主線程忙。考慮將事件處理程序標記爲「被動」,以使頁面更具響應性。

但是,緩慢的事件在遊戲停止像負載水平和構建精靈一樣的繁重工作之後依然存在。

我不能在任何情況下使用被動處理監守平移地圖必須的preventDefault停止滾動的接口,以及。


我認爲是緩慢的,因爲我已經測量多久觸摸處理程序被調用,他們似乎很奇怪觸摸事件有關。

將獲得連續5-10事件下〜20毫秒,那麼就會有一個約150-200ms,然後又一批快速事件,另有緩慢的。

方向變化後,都爲20ms


我也從測量我的requestAnimationFrame響應下收到的所有事件,他們似乎是一個相當堅實16.8ms


對於那些intrested你可以看到自己的問題在https://blight.ironhelmet.com

的問題發生在Chrome和科爾多瓦,本機和使用Crosswal ķ。 在iOS或任何經過測試的桌面瀏覽器上,Safari上不會出現這些問題。


我想知道是否有其他人有這個問題,以及如何解決它。

使用javaScript可以強制「方向更改」或在方向更改期間發生的任何事情嗎?

回答

0

硬件渲染器沒有插入,慢速軟件渲染導致事件處理速度變慢。 (從一個畫布到另一個畫布像素)

在方向更改後,似乎垃圾收集器清理了未使用的畫布,使硬件渲染器能夠踢入。