一、环境
https://blog.youkuaiyun.com/u013654125/article/details/77867567
mac:10.12.2
CocosCreator:1.5.1
二、JS原生的enum
JS没有enum类型的数据,如果想定义枚举,则:
可以定义一个对象这样来定义枚举,
LoginType = {
UserName : 0,
Quick : 1,
};
但是,这样的对象,可以在脚本里用,但是,如果希望通过CocosCreator里的编辑器来设置值的话,就行不通了。
三、CocosCreator里的enum
CocosCreator里这样定义枚举:
LoginType = cc.Enum({
UserName : 0,
Quick : 1,
});
定义了之后,如果需要在编辑器设置值,就需要在properties里定义属性:
properties: {
// foo: {
// default: null, // The default value will be used only when the component attaching
// to a node for the first time
// url: cc.Texture2D, // optional, default is typeof default
// serializable: true, // optional, default is true
// visible: true, // optional, default is true
// displayName: 'Foo', // optional
// readonly: false, // optional, default is false
// },
// ...
test : {
default : LoginType.UserName,
type : cc.Enum(LoginType)
}
},
四、TS枚举使用
export enum type {
"wei_xin" = 1, // 微信
"tou_tiao" = 2, // 头条
"vivo" = 3, // vivo
"oppo" = 4, // oppo
"qq" = 5, // qq
}
// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
import { type } from "../../../scripts/common/playerInfo";
const {ccclass, property} = cc._decorator;
@ccclass
export default class NewClass extends cc.Component {
@property(cc.Label)
label: cc.Label = null;
@property
text: string = 'hello';
@property({ type: cc.Enum(type), displayName: "渠道" })
type: type = type.oppo;
// LIFE-CYCLE CALLBACKS:
// onLoad () {}
start () {
}
// update (dt) {}
}