javascript - 使用 AngularJS/Phaser.io 进行游戏并销毁方法

标签 javascript angularjs phaser-framework

我正在和 friend 一起制作游戏,我们在 AngularJS 和 Phaser 方面遇到了一些问题。

所以,我们有一个名为游戏的页面,它有一个模板、一个 Controller 和一个工厂。 有一个页面将我们“重定向”到游戏页面(仅带有链接)。

在模板中:

<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();
}

在 Controller 中:

gameFact.init();
$scope.$on('$destroy', function() {
     gameFact.destroy();
});

当然,还有更多代码。

问题很简单:

如果我进入游戏页面,Phaser 会很好地加载游戏(我们只显示带有 Sprite 的 map )。 之后,我单击后退按钮并重新单击链接返回游戏页面。 如果我这样做 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 方法(不起作用)

你知道如何解决这个问题吗?

如果您有任何想法,请不要犹豫。即使您使用其他游戏框架(也许它的工作方式相同)。

最佳答案

我遇到了类似的问题,似乎 destroy() 无法正常工作 (issue discussed here)当前版本:

Could you please test out the dev branch, which has lots of fixes for this in.

我通过使用 dev 分支 (available here) 解决了该问题

关于javascript - 使用 AngularJS/Phaser.io 进行游戏并销毁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26349588/

相关文章:

javascript - 通过数组回收 - JavaScript

javascript - AngularJS Controller 在后端数据更改时自动更新 $scope

javascript - JQM pagebeforechange 和事件源

javascript - angular-nvd3 给出了各种错误,说 d3.scale 是未定义的

javascript - 使多部分 "fluid body"充当一个单一的 body

javascript - 重叠梯子时如何设置玩家移动能力

javascript - Ember.js 将元素添加到集合 "magically"

javascript - 多维For循环

javascript - 加载 Angular 应用程序时,Chrome devtools 挂起

html - 我可以使用 Phaser 将 Canvas 放在 img 标签内吗