Я делаю игру с другом, и у нас есть некоторые проблемы с 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 (он не работает)
Вы знаете, как решить эту проблему?
Если у вас есть идеи, не стесняйтесь. Даже если вы используете другой игровой фреймворк (возможно, он работает так же).
target="_self"
на якоре заставит angular перезагрузить все. - person Christopher Marshall   schedule 14.10.2014