我已经使用Phaser创建了一个游戏,并且我想将它“移植”到TypeScript。当我想从几个不同的状态调用相同的函数时,我遇到了一个问题。TypeScript,在不同Phaser.States中重复使用相同的功能
在其他一些变量和功能中,例如有音乐开/关功能和将整个屏幕淡化为黑色的功能。我想在不同的Phaser.States
MainMenu,LevelSelect和Game中重复使用它们。所以我把它们作为全局变量放在MyGameProj.Client命名空间中,但是当我从MainMenu状态调用它们时,这会给出错误Cannot find name ..
。
我知道全局变量和函数被认为是坏东西,但我的问题是;
如何在几个不同的Phaser.States中重新使用一个函数?
我试着加入全局变量和函数在我开机状态下,像这样:
[Boot.ts]
module MyGameProj.Client {
var SOUND_IS_ON = true;
var MUSIC_IS_ON = true;
function switchMusic(game, onoff) {
MUSIC_IS_ON = onoff;
// .. etc.
}
export class Boot extends Phaser.State {
preload() {
switchMusic(this.game, true); // no errors
//.. etc.
但是当我尝试访问switchMusic我MainMenu状态,它给出了一个错误'无法找到名称switchMusic'。但是,它们可以在Boot状态下使用和调用。
[MainMenu.ts]
module MyGameProj.Client {
export class MainMenu extends Phaser.State {
create() {
switchMusic(this.game, true); // <- error; Cannot find name switchMusic
//.. etc.
感谢您的快速回复。我刚刚开始使用TypeScript,想象中的命名空间和模块是相同的,所以我一定会检查出建议的链接。 – BdR