完整声明
有些情况下,我们需要为属性声明添加参数,这些参数控制了属性在 属性检查器 中的显示方式,以及属性在场景序列化过程中的行为。例如:
properties: {
score: {
default: 0,
displayName: "Score (player)",
tooltip: "The score of player",
}
}
以上代码为 score
属性设置了三个参数 default
, displayName
和 tooltip
。这几个参数分别指定了 score
的默认值为 0,在 属性检查器 里,其属性名将显示为:“Score (player)”,并且当鼠标移到参数上时,显示对应的 Tooltip。
下面是常用参数:
- default: 设置属性的默认值,这个默认值仅在组件第一次添加到节点上时才会用到
- type: 限定属性的数据类型,详见 CCClass 进阶参考:type 参数
- visible: 设为 false 则不在 属性检查器 面板中显示该属性
- serializable: 设为 false 则不序列化(保存)该属性
- displayName: 在 属性检查器 面板中显示成指定名字
- tooltip: 在 属性检查器 面板中添加属性的 Tooltip
更多的属性参数,可阅读 属性参数
数组声明
数组的 default 必须设置为 []
,如果要在 属性检查器 中编辑,还需要设置 type 为构造函数,枚举,或者 cc.Integer
,cc.Float
,cc.Boolean
和 cc.String
。
moveBy
案例参考
在 Cocos Creator 中,动作 简单来说就是 节点的位移、缩放和旋转。
cc.moveBy = function (duration, deltaPos, deltaY) {
return new cc.MoveBy(duration, deltaPos, deltaY);
};
方法 moveBy
一共可以传入三个参数,前两个参数我们已经知道,第三个参数是 Number
类型的 Y
坐标,我们可以发现第二个参数是可以传入两种类型的,第一种是 Number
类型,第二种才是 Vec2
类型,如果我们在这里传入的是 Number
类型,那么默认这个参数就是 X
坐标,此时就要填第三个参数,为 Y
坐标。上面的例子中 cc.moveBy(this.jumpDuration, cc.v2(0, this.jumpHeight))
第二个参数传入的是使用 cc.v2
方法构建的 Vec2
类型对象,这个类型表示的是一个坐标,即有 X
坐标也有 Y
坐标,因为不需要再传入第三个参数!同时注意官方的一段话 x and y are relative to the position of the object.
,这句话的意思是传入的 X
、Y
坐标都是相对于节点当前的坐标位置,而不是整个坐标系的绝对坐标。
moveBy()
方法的返回值,这个方法返回的是一个 ActionInterval
类型的对象,ActionInterval
在 Cocos 中是一个表示时间间隔动作的类,这种动作在一定时间内完成。到这里我们就可以理解代码 cc.moveBy(this.jumpDuration, cc.v2(0, this.jumpHeight)).easing(cc.easeCubicActionOut())
前一部分 的意思了,它的意思就是构造一个 ActionInterval
类型的对象,这个对象表示在 jumpDuration
的时间内,移动到相对于当前节点的 (0,this.jumpHeight)
的坐标位置,简单来说,就是一个向上跳跃的动作。
那么 后半部分 easing(cc.easeCubicActionOut())
的作用是什么呢?easing
是 ActionInterval
类下的一个方法,这个方法可以让时间间隔动作呈现为一种缓动运动,传入的参数是一个缓动对象,返回一个 ActionInterval
类型对象,这里传入的是使用 easeCubicActionInOut
方法构建的缓动对象,EaseCubicInOut
是按三次函数缓动进入并退出的动作,具体曲线可参考下图:
详细内容可参考 API。
*onLoad中可以定义变量,相当于外部的var;properties中定义的是元素属性,可以在编辑器中修改
制作 Prefab
对于需要重复生成的节点,我们可以将他保存成 Prefab(预制) 资源,作为我们动态生成节点时使用的模板。关于 Prefab 的更多信息,请阅读 预制资源(Prefab)。