使用AngularJS / Phaser.io和destroy方法进行游戏

时间:2014-10-13 22:02:42

标签: javascript angularjs phaser-framework

我和朋友一起玩游戏,我们在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方法(它不起作用)
  3. 你知道如何解决这个问题吗?

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

3 个答案:

答案 0 :(得分:1)

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

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

我使用dev分支(available here)

解决了这个问题

答案 1 :(得分:0)

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

此致,Nicholls

答案 2 :(得分:0)

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

集成