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

1

我有一个类似的问题,似乎与当前版本destroy()无法正常工作(此处讨论的问题) :

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

我通过使用 dev 分支解决了这个问题(可在此处获得)

于 2014-12-19T23:01:47.633 回答
0

有一个新的 WebComponent 可以将 Phaser 与任何其他框架https://github.com/proyecto26/ion-phaser集成

于 2019-06-04T05:44:19.373 回答
0

您需要使用 Angular 指令并使用导航事件来执行此操作,请查看我的示例:http ://market.ionic.io/plugins/ionphaser

问候,尼科尔斯

于 2016-09-10T20:59:25.160 回答