友人とゲームを作っていますが、AngularJS と Phaser に問題があります。
したがって、game という名前のページがあり、テンプレート、コントローラー、およびファクトリーがあります。ゲームページに「リダイレクト」するページがあります(リンクのみ)。
テンプレート内:
<div id="game"></div>
<a href="#/page">Back</a>
工場内:
// function prealod and create ....
init: function(data) {
game = new Phaser.Game(width, height, Phaser.AUTO, 'game', { preload: preload, create: create });
},
destroy: function() {
game.destroy();
}
コントローラーで:
gameFact.init();
$scope.$on('$destroy', function() {
gameFact.destroy();
});
もちろん、もっと多くのコードがあります。
問題は単純です:
ゲーム ページにアクセスすると、Phaser はゲームを適切にロードします (スプライトを含むマップを表示するだけです)。その後、戻るボタンをクリックし、リンクを再度クリックしてゲーム ページに戻ります。それを 7 回行うと、コンソールにエラーが表示されます。
Uncaught SyntaxError: Failed to construct 'AudioContext': number of hardware contexts reached maximum (6).
そして数秒後、私はこのエラーがあります:
Uncaught TypeError: Cannot read property 'gain' of undefined
私はすでにウェブで検索しており、解決策は次のとおりです。
- iFrame を使用します (iFrame が適切なソリューションであるとは本当に思いません)。
- destory メソッドを使用します (機能しません)。
この問題を解決する方法を知っていますか?
何かアイデアがあれば、ためらわないでください。別のゲーム フレームワークを使用している場合でも (同じように動作する可能性があります)。