Cocos Creator使用 cc.Class 声明类型(官方文档摘录)

前端之家收集整理的这篇文章主要介绍了Cocos Creator使用 cc.Class 声明类型(官方文档摘录)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用 cc.Class 声明类型

cc.Class是一个很常用的 API,用于声明 Cocos Creator 中的类,为了方便区分,我们把使用 cc.Class 声明的类叫做CCClass

定义 CCClass

调用cc.Class,传入一个原型对象,在原型对象中以键值对的形式设定所需的类型参数,就能创建出所需要的类。

var Sprite = cc.Class({
    name: "sprite"
});

以上代码用 cc.Class 创建了一个类型,并且赋给了Sprite变量。同时还将类名设为 "sprite",类名用于序列化,一般可以省略。

实例化Sprite变量保存的是一个 JavaScript 构造函数,可以直接 new 出一个对象:

var obj = new Sprite();

判断类型需要做类型判断时,可以用 JavaScript 原生的instanceof

cc.log(obj instanceof Sprite);       // true

构造函数使用ctor声明构造函数:

var Sprite = cc.Class({
    ctor: function () {
        cc.log(this instanceof Sprite);    // true
    }
});

Component 是特殊的 CCClass,不能定义构造函数,它的构造职能可由onLoad方法代替。

实例方法

var Sprite = cc.Class({
    // 声明一个名叫 "print" 的实例方法
    print: function () { }
});

继承extends实现继承:

// 父类
var Shape = cc.Class();

// 子类
var Rect = cc.Class({
    extends: Shape
});

父构造函数

继承后,CCClass 会统一自动调用父构造函数,你不需要显式调用

var Shape = cc.Class({
    ctor: function () {
        cc.log("Shape");    // 实例化时,父构造函数自动调用
    }
});

var Rect = cc.Class({
    extends: Shape
});

var Square = cc.Class({
    extends: Rect,ctor: "Square");   // 再调用子构造函数
    }
});

var square = new Square();

以上代码将依次输出 "Shape" 和 "Square"。

声明属性@L_502_4@
  • visible: 设为 false 则不在属性检查器面板中显示属性
  • serializable: 设为 false 则不序列化(保存)该属性
  • displayName: 在属性检查器面板中显示成指定名字
  • tooltip: 在属性检查器面板中添加属性的 Tooltip
  • 更多的属性参数,可阅读属性参数

    数组声明

    数组的 default 必须设置为[],如果要在属性检查器中编辑,还需要设置 type 为构造函数,枚举,或者cc.Integercc.Floatcc.Booleancc.String

    properties: {
        names: {
            default: [],type: [cc.String]   // 用 type 指定数组的每个元素都是字符串类型
        },enemies: {
            // type 同样写成数组,提高代码可读性
        },}

    get/set 声明属性中设置了 get 或 set 以后,访问属性的时候,就能触发预定义的 get 或 set 方法。定义方法如下:

    properties: {
        width: {
            get: function () {
                return this._width;
            },set: function (value) {
                this._width = value;
            }
        }
    }

    如果你只定义 get 方法,那相当于属性只读。

    猜你在找的Cocos2d-x相关文章