creator 静态属性_CocosCreator cc.class声明类
定義類(lèi)
var Sprite = cc.Class({
name: "sprite"
});
var obj = new Sprite();
定義的類(lèi)的類(lèi)型名為 Sprite 可以用 new 構(gòu)造一個(gè)對(duì)象。
也可以不定義類(lèi)名,直接構(gòu)造類(lèi)。
構(gòu)造函數(shù)——ctor/ __ ctor__
ctor 不允許含有參數(shù),如果構(gòu)造時(shí)需要用到參數(shù),必須使用__ctor__
var Sprite = cc.Class({
ctor: function () {
cc.log(this instanceof Sprite); // true
}
});
繼承——extends
// 父類(lèi)
var Shape = cc.Class();
// 子類(lèi)
var Rect = cc.Class({
extends: Shape
});
父類(lèi)構(gòu)造函數(shù)
不論子類(lèi)是否有定義構(gòu)造函數(shù),子類(lèi)實(shí)例化前父類(lèi)的構(gòu)造函數(shù)都會(huì)被自動(dòng)調(diào)用。
不需要嘗試調(diào)用父類(lèi)的構(gòu)造函數(shù),否則父構(gòu)造函數(shù)就會(huì)重復(fù)調(diào)用。
在一些很特殊的情況下,父構(gòu)造函數(shù)接受的參數(shù)可能和子構(gòu)造函數(shù)無(wú)法兼容。這時(shí)開(kāi)發(fā)者就只能自己手動(dòng)調(diào)用父構(gòu)造函數(shù)并且傳入需要的參數(shù),這時(shí)應(yīng)該將構(gòu)造函數(shù)定義在__ ctor__中。
var Node = cc.Class({
ctor: function () {
this.name = "node";
}
});
var Sprite = cc.Class({
extends: Node,
ctor: function () {
// 子構(gòu)造函數(shù)被調(diào)用前,父構(gòu)造函數(shù)已經(jīng)被調(diào)用過(guò),所以 this.name 已經(jīng)被初始化過(guò)了
cc.log(this.name); // "node"
// 重新設(shè)置 this.name
this.name = "sprite";
Node.call(this); // 別這么干!
this._super(); // 也別這么干!
}
});
var obj = new Sprite();
cc.log(obj.name); // "sprite"
屬性聲明
Cocos 類(lèi)中,將聲明的屬性放在 properties 中,分簡(jiǎn)單聲明和完整聲明。
簡(jiǎn)單聲明:
當(dāng)聲明的屬性為基本 JavaScript 類(lèi)型時(shí),可以直接賦予默認(rèn)值
當(dāng)聲明的屬性具備類(lèi)型時(shí)(如:cc.Node,cc.Vec2 等),可以在聲明處填寫(xiě)他們的構(gòu)造函數(shù)來(lái)完成聲明
當(dāng)聲明屬性的類(lèi)型繼承自 cc.ValueType 時(shí)(如:cc.Vec2,cc.Color 或 cc.Rect),除了上面的構(gòu)造函數(shù),還可以直接使用實(shí)例作為默認(rèn)值
當(dāng)聲明屬性是一個(gè)數(shù)組時(shí),可以在聲明處填寫(xiě)他們的類(lèi)型或構(gòu)造函數(shù)來(lái)完成聲明
properties: {
height: 20, // number
type: "actor", // string
loaded: false, // boolean
target: null, // object
target: cc.Node,
pos: cc.Vec2,
pos: new cc.Vec2(10, 20),
color: new cc.Color(255, 255, 255, 128),
any: [], // 不定義具體類(lèi)型的數(shù)組
bools: [cc.Boolean],
strings: [cc.String],
floats: [cc.Float],
ints: [cc.Integer],
values: [cc.Vec2],
nodes: [cc.Node],
frames: [cc.SpriteFrame],
}
完整聲明
有些情況下,我們需要為屬性聲明添加參數(shù),這些參數(shù)控制了屬性在屬性檢查器中的顯示方式,以及屬性在場(chǎng)景序列化過(guò)程中的行為
常見(jiàn)屬性:
default: 設(shè)置屬性的默認(rèn)值,這個(gè)默認(rèn)值僅在組件第一次添加到節(jié)點(diǎn)上時(shí)才會(huì)用到
type: 限定屬性的數(shù)據(jù)類(lèi)型
visible: 設(shè)為 false 則不在 屬性檢查器 面板中顯示該屬性
serializable: 設(shè)為 false 則不序列化(保存)該屬性
displayName: 在 屬性檢查器 面板中顯示成指定名字
tooltip: 在 屬性檢查器 面板中添加屬性的 Tooltip
properties: {
score: {
default: 0,
displayName: "Score (player)",
tooltip: "The score of player",
}
}
注:可以在 onl oad 函數(shù)中用 this 設(shè)置屬性,防止變量在屬性檢查器中賦值后無(wú)法改變。
靜態(tài)變量
靜態(tài)變量或靜態(tài)方法可以在原型對(duì)象的 statics 中聲明:
var Sprite = cc.Class({
statics: {
// 聲明靜態(tài)變量
count: 0,
// 聲明靜態(tài)方法
getBounds: function (spriteList) {
// ...
}
}
});
重寫(xiě)
子類(lèi)方法可以直接重寫(xiě)父類(lèi)方法
用 this._super 調(diào)用父類(lèi)成員
var Shape = cc.Class({
getName: function () {
return "shape";
}
});
var Rect = cc.Class({
extends: Shape,
getName: function () {
var baseName = this._super();
return baseName + " (rect)";
}
});
var obj = new Rect();
cc.log(obj.getName()); // "shape (rect)"
標(biāo)簽:cc,Class,CocosCreator,var,構(gòu)造函數(shù),聲明,class,屬性
來(lái)源: https://blog.csdn.net/qq_43575267/article/details/88796163
總結(jié)
以上是生活随笔為你收集整理的creator 静态属性_CocosCreator cc.class声明类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring Boot————简介与Sp
- 下一篇: java in action,java