私たちの JavaScript ゲームでは、「touchmove」イベントが遅くなり、向きが変わるまで「ぎくしゃく」し、その時点でイベントが再びスムーズになるという問題があります。
ゲームがレベルのロードなどの多くの作業を行うと、速度が低下します。
これは、動作中の遅いタッチ移動と、問題を修正する向きの変更を示すビデオです。
次の警告がログに表示されます
メインスレッドがビジー状態のため、「touchmove」入力イベントの処理が 141 ミリ秒遅れました。ページの応答性を高めるために、イベント ハンドラーを「パッシブ」としてマークすることを検討してください。
ただし、ゲームがレベルのロードやスプライトの構築などの重い作業を停止した後も、遅いイベントは持続します。
どのような場合でもパッシブ ハンドラーを使用することはできません。これは、マップのパンを防ぐ必要があり、インターフェイスのスクロールも停止する必要があるためです。
タッチハンドラーが呼び出される頻度を測定したところ、奇妙に見えるため、遅さはタッチイベントに関連していると思います。
20 ミリ秒未満で連続して 5 ~ 10 個のイベントを受信し、次に約 150 ~ 200 ミリ秒のイベントがあり、次に高速イベントの別のバッチがあり、別の低速イベントがあります。
向きの変更後、すべてのイベントは 20 ミリ秒未満で受信されます
requestAnimationFrame からの応答も測定しましたが、かなり堅実な 16.8ms のようです。
興味のある方は、 https: //blight.ironhelmet.com で問題を確認できます。
問題は Chrome と Cordova で発生し、ネイティブと Crosswalk を使用しています。この問題は、iOS 上の Safari またはテスト済みのデスクトップ ブラウザでは発生しません。
他の誰かがこの問題を抱えているかどうか、またどうすれば修正できるかを知りたいです。
javaScriptを使用して、「向きの変更」または向きの変更中に何が起こるかを強制することは可能ですか?