0

友人とゲームを作っていますが、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

私はすでにウェブで検索しており、解決策は次のとおりです。

  1. iFrame を使用します (iFrame が適切なソリューションであるとは本当に思いません)。
  2. destory メソッドを使用します (機能しません)。

この問題を解決する方法を知っていますか?

何かアイデアがあれば、ためらわないでください。別のゲーム フレームワークを使用している場合でも (同じように動作する可能性があります)。

4

3 に答える 3