完整聲明
有些情況下,我們需要爲屬性聲明添加參數,這些參數控制了屬性在 屬性檢查器 中的顯示方式,以及屬性在場景序列化過程中的行爲。例如:
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)。