2015-10-09 10 views
7

UIWebViewで問題が発生していて、別の開発者がHTML 5ゲームを実行しています。我々は2つの異なる選択肢を試しましたが、いずれも最適ではありません。UIWebView HTML 5ゲームiOS 9でのキャンバスの描画の遅さ、またはiOS 8.0以降でのWebGLのクラッシュ

オプション1:彼は "キャンバスの描画"でHTML 5ゲームをレンダリングします。彼がこのようにしても、何もクラッシュすることはありませんが、iOS 9ではバックグラウンドからアプリに戻ったときにWeb Viewが元に戻りますが、通常よりもずっと遅く動きます(iOS 7.1以降の問題はありません) 。はるかに遅く、アニメーションが最初にゲームを読み込んだときと同じ速度を動かさないということについて私は話しています。この問題についての奇妙なことは、ユーザーが別のHTML 5ゲームを開く(複数のゲームを追加している)場合でも、アニメーションはそのゲームでも遅くなるということです。私は、UIApplicationWillResignActiveNotificationが投稿されたときにWeb View Controllerを終了しようとしました。このようにゲームを設定すると、アプリが4秒間(それは非常に奇妙です)遅れが発生します。

オプション2:彼は "WebGL"でゲームをレンダリングします。彼がこのようにレンダリングすると、アプリがiOS 8.0以上でバックグラウンドになるとアプリがクラッシュする。このクラッシュに対する私の研究は、iOSがOpenGL ESをバックグラウンドで描くことができないということです。私はWebGLコマンドはOpenGL ESと同様のコマンドを実行していると想定しているため、クラッシュします。 UIApplicationWillResignActiveNotificationでWeb View Controllerを終了すると、クラッシュが発生します。

誰もこのような状況に対処したことはありますか?

答えて

2

問題の良い解決策が見つかりませんでしたが、回避策が見つかりました。

私はApp Will Resign Activeメッセージを受け取ると、UIWebViewControllerのサブビューからUIWebViewを削除します。 Did Become Activeメッセージが表示されたら、UIWebViewをUIWebViewControllerのサブビューに追加します。

このソリューションは、両方のケースで機能します。

+0

OpenGL ESメソッドを使用しているときにアニメーションを停止&再起動するJavaScriptイベントが発生する可能性があります。 –

+0

私たちが試したソリューションの1つは、Web上でJavaScript関数を呼び出すことでしたビュー)。この機能により、一時停止画面が表示されます。私たちがこの解決法を試みたとき、同じ問題が起こっていました。 –

+0

ポーズ画面を表示しても、ポーズ画面を描画するだけで描画ループを実行できます。私は、 'setTimeout();'を使ってdrawループを構築し、次に 'clearTimeout();'を呼び出す一時停止メソッドを置くことができました。そして、あなたのレジュームはdrawメソッドを呼び出すだけで、 setTimeout'テストをしなくても、私の経験に基づいたすべての理論です。 :)私はこれを使用するつもりはないが、私はdeltaTimeとタイムアウトベースの管理http://650h.rs/1R1f1uvを使用して2Dで描画呼び出しの実装を持っている –

関連する問題