接觸Cocos-JS開發(fā)10多天以來埋嵌,漸漸熟悉了Cocos的一些東西破加,當(dāng)然也遇到了一些埂,官方的文檔還是挺詳細(xì)的雹嗦,但是作為完全的門外漢通過閱讀文檔來解決問題范舀,可以解決50%,另外的需要通過Cocos官方社區(qū)以及StackOverFlow之內(nèi)的技術(shù)論壇解決了罪。
1锭环、先得理解Cocos中的各種節(jié)點(diǎn)(Node),組件(Component)的意義泊藕。我的理解辅辩,Cocos中的任一UI塊都是一個(gè)Node,比如展示圖片的精靈(Sprite)娃圆,展示文字的標(biāo)簽(Label)玫锋,但是Sprite和Label他們都是附著在Node上的Component,所以當(dāng)你想操作圖片和文本的時(shí)候讼呢,拿到Sprite和Label對(duì)象需要調(diào)用node.getComponent(cc.Sprite)或者node.getComponent(cc.Label)來進(jìn)行撩鹿。
當(dāng)然,JS在Cocos中也是作為Component附著在Node中的悦屏,在代碼中取出某個(gè)Node上的JS使用node.getComponent('JS名稱')节沦。
2键思、Sprite精靈設(shè)置圖片。使用node.getComponent(cc.Sprite).spriteFrame = newSpriteFrame;實(shí)現(xiàn)甫贯,之前查文檔使用node.getComponent(cc.Sprite).setTexture(cc.url.raw('resources/xxx.png')))不頂用吼鳞。
newSpriteFrame在代碼中構(gòu)造麻煩,可以在ccClass中設(shè)置屬性Properties叫搁,然后在屬性檢查器中直接將圖片拖拽到屬性中生成SpriteFrame赔桌,然后在代碼中直接使用屬性即可。
3常熙、Node節(jié)點(diǎn)設(shè)置事件監(jiān)聽和取消事件監(jiān)聽纬乍。一般使用node.on(cc.Node.EventType.TOUCH_START,function(event){}.bind(this));或者node.on(cc.Node.EventType.TOUCH_END,function(event){}.bind(this));之類的形式注冊(cè)點(diǎn)擊事件。問題來了裸卫,我們?cè)谑录惺褂昧薳vent參數(shù),那么在取消事件中我們必須和注冊(cè)事件一樣的參數(shù)纽竣,不能將上述代碼再這樣寫一遍吧:node.off(cc.Node.EventType.TOUCH_START,function(event){}.bind(this));而且這種情況下墓贿,function函數(shù)指針也不一樣,也不會(huì)生效蜓氨。文檔中告訴我們聋袋,可以在類中定義屬性function,比如this.callback穴吹。但這樣的話幽勒,event就不work了。后來查到文檔node.on()方法返回的就是這個(gè)function的指針港令,這樣就方便多了啥容。于是注冊(cè)和取消事件變得異常簡單。
var callback = node.on(cc.Node.EventType.TOUCH_START,function(event){}.bind(this));
node.off(cc.Node.EventType.TOUCH_START,callback);至于callback如何存取使用視具體情況顷霹。
4咪惠、Node的屬性參數(shù)attr。在Android開發(fā)中淋淀,每個(gè)View都有一個(gè)屬性叫Tag遥昧,類型是Object,基本上可以存儲(chǔ)任意類型的數(shù)據(jù)朵纷。那么需求就來了炭臭,在Cocos開發(fā)中,有些數(shù)據(jù)需要和對(duì)應(yīng)的Node進(jìn)行綁定袍辞,可以使用node的attr()方法將數(shù)據(jù)綁定進(jìn)去鞋仍。比如,在上一個(gè)事件綁定的埂中革屠,可以將callback綁定到node上凿试,這樣可以在任意位置取出并取消綁定排宰。
var callback = node.on(cc.Node.EventType.TOUCH_START,function(event){}.bind(this));
node.attr('callback',callback);
node.off(cc.Node.EventType.TOUCH_START,node['callback']);
attr是以key-value進(jìn)行存取的,有很大的擴(kuò)展性那婉,使用時(shí)特別方便板甘。
5、使用純色Sprite详炬。在實(shí)際開發(fā)中盐类,Sprite精靈基本上是使用圖片渲染,但對(duì)于一些純色的Sprite呛谜,我們可以使用Color來代替圖片在跳,好處就不言而喻了。具體使用如下:
Sprite.setColor(cc.color(255,255,255));
設(shè)置透明度:Sprite.setOpacity(128);