我正在和朋友一起制作游戏,我们在使用 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方法(不起作用)
你知道如何解决这个问题吗?
如果您有任何想法,请不要犹豫。即使您使用另一个游戏框架(也许它的工作方式相同)。