摘要:一首先当然得有至少有二个场景二从场景传值到场景二种方法通过事件从通过时传值到时有个需要特别注的事项就是,得把的设为否则因为还未激活,是监听不到事件的通过场景启动具体详见代码在整个工程中只会执行一次每次调用场景会执行一次从事件传
一、首先当然得有至少有二个场景sceneA.js,sceneB.js
二、从场景A传值到场景B二种方法
1)通过事件this.events.emit("event key",{objKey:objValue});
从sceneA通过 ths.events.emit时传值到sceneB时有个需要特别注的事项就是,得把sceneB的 active设为 ture,否则因为 sceneB还未激活,是监听不到 events.on事件的!!!
2)通过场景启动this.scene.start("gameB key",{objKey:objValue});
具体详见代码:
HTML
iFIERO Games Tutorial ©Copyrigths By www.iFIERO.com
sceneA.js
"use strict"; var SceneA = new Phaser.Class({ Extends: Phaser.Scene, // 在整个工程中只会执行一次 initialize: function BootScene() { Phaser.Scene.call(this, { key: "sceneA", active: false // listening resize event; }); }, // 每次调用场景SceneA会执行一次; init: function () { }, preload:function(){ }, create:function(){ // 1. 从SCENEA emit gameCountDown事件,传送 {countDown:10} 对象到场景B sceneB this.events.emit("gameCountDown",{countDown:10}); //* 事件KEY=>gameCountDown // 2.start方法传送 this.scene.start("sceneB",{countDown:10}) //* 场景KEY=> sceneB }, });
sceneB.js
"use strict"; var SceneB = new Phaser.Class({ Extends: Phaser.Scene, initialize: function BootScene() { Phaser.Scene.call(this, { key: "sceneB", active: true // listening resize event; }); }, init: function (data) { //方法1. 引入sceneA 在初始化的时候就可以获得场景Scene传递的值; this.sceneA = this.scene.get("sceneA"); // sceneA"s key console.log("get data from sceneA:",data.countDown); }, preload:function(){ }, create:function(){ // 方法2.监听scene的事件 gameCountDown this.sceneA.events.on("gameCountDown",function(data){ console.log(data.countDown); }); }, });
gameconfig.js
var game; //* setDepth for every object; var gameConfig = { depth:{ player:1, } } // once the window loads... window.onload = function () { // 接收 websocket; // config of the game; var config = { type: Phaser.AUTO, parent: "game", width: 640, // don"t window.innerWidth height: 512, physics: { default: "arcade", arcade: { gravity: { y: 0 }, debug: false, } }, //*** scenes used by the game // scene: [BootScene,PlayGameScene,UIScene] } game = new Phaser.Game(config); game.scene.add("sceneA", SceneA); //*** key,class */ game.scene.add("sceneB", SceneB); window.focus(); resize(); window.addEventListener("resize", resize, false); } function resize() { var canvas = document.querySelector("canvas"); var windowWidth = window.innerWidth; var windowHeight = window.innerHeight; var windowRatio = windowWidth / windowHeight; var gameRatio = game.config.width / game.config.height; if (windowRatio < gameRatio) { canvas.style.width = windowWidth + "px"; canvas.style.height = (windowWidth / gameRatio) + "px"; } else { canvas.style.width = (windowHeight * gameRatio) + "px"; canvas.style.height = windowHeight + "px"; } }
结语: 用Phaserjs3 JavaScript框架 来开发HTML网页游戏,虽不复杂,但有道是『纸上得来终觉浅,绝知此事要躬行』,代码还是得亲自多码才行噢!
更多游戏教学:http://www.iFIERO.com -- 为游戏开发深感自豪
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/53222.html
摘要:一首先当然得有至少有二个场景二从场景传值到场景二种方法通过事件从通过时传值到时有个需要特别注的事项就是,得把的设为否则因为还未激活,是监听不到事件的通过场景启动具体详见代码在整个工程中只会执行一次每次调用场景会执行一次从事件传 showImg(https://segmentfault.com/img/remote/1460000016953682); 一、首先当然得有至少有二个场景sc...
摘要:前言作为一款流行的游戏动画框架受到很多开发者的青睐最近笔者在逛意大利开发者论坛的时候发现了这款小游戏所以就照着说明做了一下在这里记录下来开发准备插件脚本飞刀和靶子的图像或者这个项目里面有的脚本和需要的图像文件开始制作搭建基本的项目创建一个 前言 phaser作为一款流行的游戏/动画框架,受到很多web开发者的青睐,最近笔者在逛意大利开发者:emanueleferonato论坛的时候发现...
摘要:自定义自定义完整代码更多游戏教学为游戏开发深感自豪 showImg(https://segmentfault.com/img/remote/1460000017262663); EC6 自定义class class Brain extends Phaser.GameObjects.Sprite { constructor (scene, x, y) { ...
摘要:自定义自定义完整代码更多游戏教学为游戏开发深感自豪 showImg(https://segmentfault.com/img/remote/1460000017262663); EC6 自定义class class Brain extends Phaser.GameObjects.Sprite { constructor (scene, x, y) { ...
阅读 3511·2021-11-15 11:38
阅读 824·2021-11-08 13:27
阅读 2234·2021-07-29 14:50
阅读 2969·2019-08-29 13:06
阅读 838·2019-08-29 11:22
阅读 2408·2019-08-29 11:04
阅读 3498·2019-08-28 18:23
阅读 890·2019-08-26 13:46