Phaser,Tips & tricks

Charger et utiliser un fichier JSON contenant des données dans Phaser

31 May , 2015  

Dans le cadre de développement de petits jeux il peut être utile d’importer un lot de données au format JSON. Cependant, il n’existe pour le moment (nous sommes à la version 2.3 au moment de l’écriture de ce billet) pas à proprement parler de méthode pour importer des données contenues dans un fichier JSON dans Phaser (je ne parle ici pas de Tilemaps). Néanmoins cela est possible, et très simplement.

Ayant moi même été confrontée au problème, voici ci-dessous comment j’ai remédié à ce problème.

1 – Chargement du fichier JSON lors du préchargement des données , au format texte et donc à l’aide de la méthode load.text :

 

2 – L’étape suivante consiste à récupérer les données dans le cache – où se trouvent toutes les ressources préchargées – avec la méthode game.cache.getText(); , et à les stocker dans une variable – cela suppose logiquement que nous ne pouvons effectuer cette démarche qu’une fois le préchargement fini, et les données effectivement placées en cache. Par conséquent, on ne pas doit définir notre variable :

  • dans l’état ( State ), qui précharge nos données (si vous utilisez le State Manager , ce qui est plus que conseillé)
  • ou dans la fonction Preload de votre jeu, si vous n’utilisez pas le state manager, et qui sera donc l’endroit où seront préchargées les données du jeu.

Une fois notre variable instanciée, et contenant nos datas, on  converti ces dernières au format JSON (rappellons qu’elles ont été chargées en tant que format text, seule méthode disponible pour le moment dans Phaser, il faut donc revenir au format JSON).

La variable parsedData contient maintenant nos données au format voulu, et nous pouvons les utiliser comme d’importe quelles données de format JSON au sein de notre jeu.

Il est fort probable que Phaser permette très rapidement de ne plus avoir à passer par ce hack. En attendant, celui là fonctionne très bien.


Leave a Reply

Your email address will not be published. Required fields are marked *

*