【问题标题】:Game with AngularJS/Phaser.io and destroy method使用 AngularJS/Phaser.io 和销毁方法进行游戏
【发布时间】:2019-06-04 13:44:19
【问题描述】:

我正在和朋友一起制作游戏,我们在使用 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方法(不起作用)

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

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

【问题讨论】:

  • 不确定是否要在切换路由时保持状态,但锚点上的简单target="_self" 将强制 Angular 重新加载所有内容。
  • 感谢您的回答,但它不起作用。我在控制台中仍然有这个错误:Uncaught SyntaxError: Failed to construction 'AudioContext': number of hardware contexts reached maximum (6).

标签: javascript angularjs phaser-framework


【解决方案1】:

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

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

我通过使用开发分支(available here)解决了这个问题

【讨论】:

  • 你使用的是哪个版本的开发分支?
  • @jjwallace 这是前一段时间,我认为主分支现在应该可以正常工作了。但我认为是 2.1.0-dev 分支
【解决方案2】:

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

问候,尼科尔斯

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多