一、基本內(nèi)容:
1.cc.Label相關(guān):
(1)動(dòng)態(tài)創(chuàng)建cc.Label : var node = new cc.Node('text'); node.addComonpnet(cc.Label);
(2) 設(shè)置文本內(nèi)容:node.getComponent(cc.Label).string = 'test'; 設(shè)置大谐┭啤:node.getComponent(cc.Label).fontSize = 30 文本對(duì)齊:參考creator中
(3) 如何動(dòng)態(tài)獲取文本的寬度: node.getComponent(cc.Label).string = 'test'; var getWidth = node.width;這樣即可獲得寬度;注意事項(xiàng):要讓node所在父節(jié)點(diǎn)active =true知举,即讓js腳本調(diào)用onload函數(shù)之后拧篮,才能正確獲取with;
(4) 文本長(zhǎng)度超出creator中設(shè)定長(zhǎng)度時(shí)不顯示:node.getComponent(cc.Label).overFlow = cc.Label.Overflow.CLAMP 還有其它幾種模式暫時(shí)沒(méi)用到后續(xù)研究,這里說(shuō)下含義,NONE(無(wú)樣式)隐岛、CLAMP(截?cái)啵┦贩伞HRINK(自動(dòng)縮小文字以適應(yīng)大屑饣琛)仰税、RESIZE_HEIGHT(自增長(zhǎng)高度)
2.cc.Sprite相關(guān)
(1)動(dòng)態(tài)創(chuàng)建cc.Label : var node = new cc.Node('text'); node.addComonpnet(ccSprite);
(2)設(shè)置圖片:node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture);
a) 精靈幀獲取的獲取方法1:new cc.SpriteFrame(texture); 優(yōu)點(diǎn):動(dòng)態(tài)加載构资,缺點(diǎn):會(huì)有異步問(wèn)題
那么texture如何獲取陨簇?cc.loader.load({url: cc.mg.util.get_wxhead(userData.url), type: 'jpg'}, function (err, texture) {
var head = new cc.SpriteFrame(texture);
dialog.getChildByName('face').getChildByName('mask').getChildByName('tx').getComponent(cc.Sprite).spriteFrame = head;
});
b) 精靈幀獲取的獲取方法2:界面綁定的腳本,即.js文件properties: 中定義 frame : cc.SpriteFrame吐绵,然后在creator中將圖片拉倒這個(gè)frame上迹淌。優(yōu)點(diǎn):初始化加載,方便使用己单。缺點(diǎn):會(huì)有內(nèi)存大唉窃,加載速度慢
3.cc.Animation相關(guān)
(1)動(dòng)畫播放和停止:node.getComponent(cc.Animation).play;node.getComponent(cc.Animation).stop();
(2)注冊(cè)動(dòng)畫播放完成事件:node.getComponent(cc.Animation).on('finished', function(){cc.log('finish')};
(3)備注:creator中默認(rèn)有個(gè)playOnLoad屬性需要注意:含義是在第一次active設(shè)為可見(jiàn)的時(shí)候會(huì)自動(dòng)播放動(dòng)畫,如果不需要可以不勾選纹笼。
4.ToggleGroup相關(guān)
定義:組合框(多項(xiàng)中只能選擇一項(xiàng))
(1)怎么獲取toggle(其中的一項(xiàng)):this.togglegroup.toggleItems[0]纹份;這代碼訪問(wèn)第一項(xiàng)。
(2)怎么獲取toogle是否選中:this.togglegroup.toggleItems[0].check()廷痘;調(diào)用check()方法
(3)備注:在onload獲取調(diào)用this.togglegroup.toggleItems.length獲取的長(zhǎng)度為0蔓涧,所以只能在start()函數(shù)中調(diào)用,creator設(shè)定的
5.cc.Button相關(guān)
(1)設(shè)置按鈕灰態(tài):node.getComponent(cc.Button).interactable = true;與creator中的EnableAuto中配合笋额;表現(xiàn)上是會(huì)灰色了元暴,但是按鈕還是可以點(diǎn)擊,還得通過(guò)事件回調(diào)來(lái)處理兄猩,按下return茉盏;
(2)事件注冊(cè):btn.on('touchend' || 'mouseup', function(e) {var btn = e.currentTarget; };在回調(diào)內(nèi)部獲取按鈕自己
(3)修改按鈕的圖片:即修改cc.Sprite組件,參考上面cc.Sprite相關(guān)
- Layout相關(guān)
(1)這個(gè)布局控件在孩子設(shè)置為隱藏的時(shí)候枢冤,會(huì)自動(dòng)調(diào)整孩子的位置鸠姨,可以設(shè)置為左對(duì)齊,居中對(duì)齊等等淹真;但是現(xiàn)在有個(gè)bug:在孩子的類型不同時(shí)享怀,自動(dòng)調(diào)整孩子的位置時(shí)不對(duì),需要用代碼控制孩子的位置趟咆,如果孩子多的話添瓷,最好還是不要用Layout布局。
7.RichText相關(guān)
(1)用法node.getComponent(cc.RichText).string = '<color=#FF0000>' + '我是富文本' + '</c>';
(2)換行增加字符串‘
’值纱;
8.定時(shí)器相關(guān)
(1)創(chuàng)建:
a) this.schedule(this.updatePlayerTime,1); 參數(shù)1:callback 參數(shù)2:間隔鳞贷;備注:這個(gè)this一定要掛接在組件上的腳本
b) cc.director.getScheduler().scheduleCallbackForTarget(this,function(){},1,0);
(2)銷毀:
a) this.unschedule(this.updatePlayerTime); 銷毀所有:this.unscheduleAllCallbacks();
b) cc.director.getScheduler().unscheduleCallbackForTarget(this, this.timer);銷毀所有:cc.director.getScheduler().unscheduleAllForTarget(this);
(3)只執(zhí)行一次:this.scheduleOnce()
9.操作事件相關(guān)(點(diǎn)擊彈起移動(dòng)事件)
(1)彈起事件:node.on('touchend' || 'mouseup', function(e) {})
(2)按下事件、長(zhǎng)按事件:node.on('touchstart',function(e){})
(3)移動(dòng)事件:node.on('touchmove',function(e){})
(4)取消事件:node.on('touchcancel',function(e){}) 離開(kāi)精靈的時(shí)候會(huì)觸發(fā)這個(gè)事件
10.cc.EditBox相關(guān)
暫時(shí)未用到
二虐唠、進(jìn)階內(nèi)容:
1.全局系統(tǒng)事件:
a)發(fā)送:var data= {};cc.systemEvent.emit('eventName', data);沒(méi)有data:cc.systemEvent.emit('eventName');
b)注冊(cè)事件:cc.systemEvent.on('eventName', this.eventCallBack, this);
c)取消事件注冊(cè):cc.systemEvent.off('eventName', this.eventCallBack, this);
d)事件回調(diào)函數(shù):eventCallBack:function(e) { var data= e.detail;};
2.節(jié)點(diǎn)動(dòng)態(tài)創(chuàng)建銷毀:
a)var node = new cc.Node("name");
b) node.destroy();
3.根據(jù)現(xiàn)有的節(jié)點(diǎn)創(chuàng)建節(jié)點(diǎn):
var newNode = cc.instantiate(oldNode);
4.實(shí)例化預(yù)制:
cc.loader.loadRes('prefab/resName', cc.Prefab, function(err, prefab){
var newNode = cc.instantiate(prefab);
});
5.資源的加載:
cc.loader.load();
cc.loader.loadRes();
cc.loader.loadResArray();
cc.loader.loadResDir();
cc.loader.loadResDir加載資源有沒(méi)有同名覆蓋的問(wèn)題搀愧;比如A目錄下a.png;B目錄下也有a.png代碼中會(huì)顯示哪個(gè)png,如果用自動(dòng)圖集肯定沒(méi)這問(wèn)題
6.資源的釋放:
cc.loader.releaseRes(resPath);目前用在界面動(dòng)態(tài)創(chuàng)建疆偿,在關(guān)閉界面的時(shí)候用這個(gè)函數(shù)釋放當(dāng)前界面資源prefab;
看下cc.loader類中的釋放函數(shù)咱筛,目前項(xiàng)目中并沒(méi)有用到復(fù)雜的內(nèi)存釋放。
7.點(diǎn)A移動(dòng)到點(diǎn)B杆故,B有父節(jié)點(diǎn)迅箩,坐標(biāo)如何轉(zhuǎn)換?
var pos4 = this.pointB.convertToWorldSpaceAR(cc.p(0,0));
var pos5 = this.pointA.parent.convertToNodeSpaceAR(pos4);
var moveTo = cc.moveTo(0.5, pos5);
8.場(chǎng)景切換:
cc.director.loadScene(scene_name, callback); //scene_name為creator中.fire的文件名