一、类的构造
-
cc.Class == 类型声明
var Sprite = cc.Class({ name: "sprite" });
-
实例化,
var obj = new Sprite();
-
判断实例,
obj instanceof Sprite
-
判断两个类的继承关系,
cc.isChildClassOf(child, parent)
-
构造函数,
var Sprite = cc.Class({ ctor: function () { cc.log(this instanceof Sprite); // true } });
-
继承,
// 父类 var Shape = cc.Class(); // 子类 var Rect = cc.Class({ extends: Shape });
-
静态变量和静态方法
var Sprite = cc.Class({ statics: { // 声明静态变量 count: 0, // 声明静态方法 getBounds: function (spriteList) { // ... } } });
-
设置组件执行优先级
cc.Class({ extends: cc.Component, editor: { executionOrder: -1 }, onLoad: function () { cc.log('Player onLoad!'); } });
executionOrder
越小,该组件相对其它组件就会越先执行。 executionOrder
默认为 0,因此设置为负数的话,就会在其它默认的组件之前执行。
二、声明属性
通过在组件脚本中声明属性,我们可以将脚本组件中的字段可视化地展示在 属性检查器 中,从而方便地在场景中调整属性值。
要声明属性,仅需要在 cc.Class 定义的 properties 字段中,填写属性名字和属性参数即可。
1. 简单声明
-
当声明的属性为基本 JavaScript 类型时,可以直接赋予默认值:
properties: { height: 20, // number type: "actor", // string loaded: false, // boolean target: null, // object }
-
当声明的属性具备类型时(如:cc.Node,cc.Vec2 等),可以在声明处填写他们的构造函数来完成声明
properties: { target: cc.Node, pos: cc.Vec2, }
-
当声明属性的类型继承自 cc.ValueType 时(如:cc.Vec2,cc.Color 或 cc.Rect),除了上面的构造函数,还可以直接使用实例作为默认值
properties: { pos: new cc.Vec2(10, 20), color: new cc.Color(255, 255, 255, 128), }
-
当声明属性是一个数组时,可以在声明处填写他们的类型或构造函数来完成声明
properties: { any: [], // 不定义具体类型的数组 bools: [cc.Boolean], strings: [cc.String], floats: [cc.Float], ints: [cc.Integer], values: [cc.Vec2], nodes: [cc.Node], frames: [cc.SpriteFrame], }
2.完整声明
有些情况下,我们需要为属性声明添加参数,这些参数控制了属性在 属性检查器 中的显示方式,以及属性在场景序列化过程中的行为。
properties: {
score: {
default: 0,
displayName: "Score (player)",
tooltip: "The score of player",
},
scoreDisplay: {
default: null,
type: cc.Label
}
}
下面是常用参数:
-
default: 设置属性的默认值,这个默认值仅在组件第