how*_*d10 2 javascript phaser-framework
我正在创建一个Phaser游戏,它将构成一个更大的JS应用程序的一部分.当玩家完成一个关卡时,我需要隐藏游戏,以便在游戏在下一关卡的后期再次显示之前返回执行其他任务.
我很难找到一种合理的方法来触发一个事件(或另一种调用回调函数的方式)从一个Phaser.Game实例化它的JS.
我此刻想到的唯一想法是手动将回调添加到游戏中:
function onLevelComplete() {
// example callback function
}
this.game = new Phaser.Game(800, 600, Phaser.AUTO, this.el);
this.game.levelCompleteCallback = onLevelComplete;
Run Code Online (Sandbox Code Playgroud)
然后Phaser.Game我可以做任何事情(例如在一个州内)this.game.levelCompleteCallback().
麻烦的是,这感觉非常紧密.我想要的是一种做某事的方式,而不必this.game.fireEvent('levelComplete')关心另一方是否有任何倾听.
是否有任何内置的我缺少可以让我做我需要的东西?
我会在你的游戏中使用一个信号:
this.onLevelComplete = new Phaser.Signal();
...
// some condition is met
this.onLevelComplete.dispatch();
Run Code Online (Sandbox Code Playgroud)
只要信号暴露在上面的应用程序中,它就可以很容易地注册它.也许一个全局对象(gameEvents?),或者到当前状态的路径,或者游戏可能会将事件的引用传递到某个应用程序中.有很多方法可以做到这一点.
function appDoesSomething() {}
gameEvents.onLevelComplete.add(this.appDoesSomething, this);
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,最终结果是游戏可以快乐地发出信号而不关心应用是否正在收听.
但是,这个设置完全脱离是不可能的,它们会在某个地方连接起来.这取决于你在哪里.
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |