Jeu avec Phaser.io et suppression des données
Bonsoir,
Je suis entrain de développer un jeu avec un pote. Nous utilisons AngularJS et Phaser.io pour le front-end et nodeJS pour le back-end.
Nous avons un problème avec Phaser à cause d'AngularJS.
Notre jeu est sur la page : game.html. Cette page a un controller, un template et utilise une factory pour "instancier" le jeu.
Dans le template, nous avons juste ceci :
Code:
1 2
| <div id="game"></div>
<a href="#/unepage">Retour</a> |
Dans le controller, nous appelons une factory qui va s'occuper d'initialiser le jeu :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| var width = XXXX;
var height = XXXX;
var game = null;
function preload() {
// du code ...
}
function create() {
// du code ...
}
// encore du code ...
init: function() {
game = new Phaser.Game(WIDTH, HEIGHT, Phaser.AUTO, 'game', { preload: preload, create: create });
}
destroy: function() {
game.destroy();
} |
Le problème est simple, si on clique sur le lien "Retour" et qu'en suite, sur l'autre page on clique sur un lien qui nous ramène sur la page "Game" (celle ou y a la DIV et ou l'on crée l'instance de Phaser), cela recree une 2eme instance de Phaser !
Pour essayer de régler ça, j'ai regardé sur le net, et ils disent d'utiliser la methode "destroy" de Phaser.Game.
Pour l'appeler, j'utilise ceci dans le controller de la page game :
Code:
1 2 3
| $scope.$on('$destroy', function() {
gameFact.destroy();
}); |
Ça appelle bien la fonction quand on quitte la page (quand on clique sur "Retour"), ça appelle bien la fonction destroy du gameFact et donc le destroy de Phaser mais ça change rien, quand on fera encore un new Phaser.Game, ça va recréer une instance.
En plus, au bout de X instances créer, Google Chrome nous dit qu'on a plus le droit d'en créer :
Citation:
Uncaught SyntaxError: Failed to construct 'AudioContext': number of hardware contexts reached maximum (6).
Il parle de l'Audio, mais on a pas de son dans notre jeu ...
Comment corriger ce problème ??
Merci d'avance pour vos réponses.
PS : On veut pas utiliser d'Iframe (une personne avait conseillée ça sur forum)...