如何定义一个全局的枚举?

cocoscreator版本:2.0.9

语言:Ts语言

目的:定义一个全局的枚举

例子:全局的流程状态机使用的状态

本人测试代码:

Global.ts

class Global {
static GameState = {
Menu:0,
Play:1,
Pause:2,
Resume:3,
GameOver:4,
LevelUp:5,
Reward:6
}
}
(window).Global = Global;

a.ts

const {ccclass, property} = cc._decorator;
@ccclass
export default class NewClass extends cc.Component {
@property({
type:cc.Enum(Global.GameState)
})
gameStatu = Global.GameState.Menu;

start () {

    let test= cc.Enum(Global.GameState).Menu;
    console.log(test);

    console.log(this.gameStatu)

}

}

问题:
在VSCode里面并没有报错,可是test能正常输出,gameStatu就会提示Global not define

之前我一直都是使用上面的Global方法来定义全局的数据的,可是枚举就出现问题

是我定义的全局类的问题,还是对全局的枚举使用的问题?

还有一点想请教一下,脚本的执行顺序有什么规律,我有时require脚本会直接报错,必须要使用node.getComponet来获取到对应的脚本才行

ts 导入脚本用import的比较多

没必要把枚举变量放到类内 再学学es6和ts语法

按照代码部分应该不会出错,我自己试验过也没有报错.你出现错误的可能原因是Global还未执行,但是那样creator会直接报错,a脚本是挂载不上去的.

而且,我自测时,虽然可以执行,但是vscode是报错的,会报一个"类型“Window”上不存在属性“Global”。ts(2339)"的错误,虽然不影响执行.

最后,你的报错是"Global not define",说明Global完全未被定义,否则应该会报错"Cannot read property ‘GameState’ of undefined".

综上,你给的信息并不完全,而且前后有异常,特别是vscode未报错这一点.

另外,ts不鼓励使用全局变量,最好还是通过export/import相互引用,也不鼓励使用require.
即在Global.ts中export class Global {...}
然后在a.ts中import { Global } from "./Global"(路径自己调整)

另外,ts也不推荐使用object作为枚举,而是直接使用enum关键字做,直接使用即可.不过在property-type中依然要是要cc.Enum()

谢谢耐心回答