Soy absolutamente nuevo con Phaser 3 .
He instalado la biblioteca con npm. Luego busco ingenuamente el archivo incluido de node_modules .
<body> <script src="./node_modules/phaser/dist/phaser-arcade-physics.js"></script> <script src="./js/start.js"></script> </body>Cuando cargo index.html en el navegador como archivo, funciona bien. Pero ahora he creado un pequeño v-host en mi Apache y dejo que sirva los archivos. Esto también funciona, pero Phaser me grita:
Uncaught TypeError: this.texture is undefined setFrame http://game.localhost/personwar/node_modules/phaser/dist/phaser-arcade-physics.js:138726 setTexture http://game.localhost/personwar/node_modules/phaser/dist/phaser-arcade-physics.js:138699 Image http://game.localhost/personwar/node_modules/phaser/dist/phaser-arcade-physics.js:29328 <anonymous> http://game.localhost/personwar/node_modules/phaser/dist/phaser-arcade-physics.js:168386 create http://game.localhost/personwar/js/start.js:34 [...] DOMContentLoaded http://game.localhost/personwar/node_modules/phaser/dist/phaser-arcade-physics.js:86811 Game http://game.localhost/personwar/node_modules/phaser/dist/phaser-arcade-physics.js:154945 <anonymous> http://game.localhost/personwar/js/start.js:17He robado start.js del tutorial para principiantes y aquí comienza todo:
function create () { console.log('this', this); this.add.image(0, 0, 'bg').setOrigin(0, 0); ... } No entiendo por qué this.texture cambia cuando la biblioteca está alojada en sí misma, en comparación con el file:// . ¿Qué necesito cambiar aquí?
Puede ser un problema de tiempo, tal vez necesito configurar algo más antes de llamar a this.add.image en la devolución de llamada de create .
Continuaré investigando qué textura es en realidad.
La regla "default-src 'self'; style-src 'self' 'unsafe-inline'; object-src 'none'"
bloqueó esta llamada
gota: http://game.localhost/b6ac3ad7-e25b-4b82-8d07-8f4ce6c331c3
cual fue la convocatoria de una de nuestras imagenes. Esto es raro y no lo entiendo. Pero el punto es: no hay imagen cargada -> no hay textura .
Bueno, no sé qué archivo estás vinculando. el archivo principal de Phaser se llama Phaser.js o Phaser.min.js . Creo que esta es la raíz de tu problema.
La solución fácil es descargar el archivo javascript de Phaser en su carpeta web o vincularlo desde un cdn. ( https://phaser.io/download/stable )
Si (quiere) usar npm , necesitará un paquete como paquete web, paquete , ... hay plantillas de servicio disponibles. (como este https://github.com/photonstorm/phaser3-project-template ).
por cierto: no soy un experto, pero en general nunca tendría el directorio
node_modulesen una carpeta accesible del servidor web (si no es realmente necesario, y si está ejecutando apache, probablemente no sea necesario), ya que esto podría crear ser un riesgo potencial de seguridad.