溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

cc.Node.動(dòng)作

發(fā)布時(shí)間:2020-07-25 01:47:32 來源:網(wǎng)絡(luò) 閱讀:2508 作者:超級(jí)極客 欄目:游戲開發(fā)

Action動(dòng)作


1.Action類是動(dòng)作命令,我們創(chuàng)建action,然后節(jié)點(diǎn)運(yùn)行action就能夠執(zhí)行Action的動(dòng)作


2.Action分為兩類;

(1)即時(shí)動(dòng)作:       瞬時(shí)就完成    ActionInstant

(2)時(shí)間間隔動(dòng)作:要一段時(shí)間才能完成ActionIntervial


3.runAction:節(jié)點(diǎn)運(yùn)行這個(gè)action動(dòng)作.


5.以下是常用action,TO和BY的區(qū)別是:

TO是目標(biāo).  BY是變化.


6.cc.MoveTo cc.MoveTo 

MoveTo:移動(dòng)到指定的坐標(biāo),移動(dòng)到目標(biāo)位置。

MoveBy:分別移動(dòng)多少. 移動(dòng)指定的距離.

返回的都是一個(gè)ActionIntervial時(shí)間間隔動(dòng)作

    //第一個(gè)參數(shù)就是多久執(zhí)行
    //第二個(gè)參數(shù)可以是一個(gè)數(shù),那么他第三個(gè)參數(shù)就是y
    //如果他是一個(gè)二維向量 那么不需要第三個(gè)參數(shù)。
    //這樣也是可以的 cc.moveTo(3,x,y)
    var mto = cc.moveTo(3,cc,p(100,100));
this.node.runAction(mto);


7.rotateTo和rotateBy

rotateTo之后他的rotate屬性就是170,

因?yàn)樗囊馑季褪切D(zhuǎn)到170度,耗時(shí)2秒鐘.

//旋轉(zhuǎn)到170度
var rto = cc.rotateTo(2,170);
this.node.runAction(rto);

rotateBy旋轉(zhuǎn)變化多少度

//在原來的基礎(chǔ)上變化75度,可正可負(fù)
var rby = cc.rotateBy(1,75);
this.node.runAction(rto);



9.scaleTo和scaleBy 縮放


按節(jié)點(diǎn)的大小縮放指定的倍數(shù)

放大或縮小到某一比例


這里會(huì)發(fā)生由大大小的動(dòng)作:因?yàn)槟惝?dāng)前是2,我要縮放到1.1

所以他會(huì)縮小.

this.node.scale = 2;
var sto = cc.scaleTo(1,1.1);
this.node.runAction(sto);


按指定的倍數(shù)縮放節(jié)點(diǎn)大小

所就是說按當(dāng)前的scale來乘以指定的倍數(shù)

如果說當(dāng)前scale是1 那就是1.1*scale

比如你的scale是2 那就是縮放2.2倍


這里會(huì)發(fā)生放大的動(dòng)畫,因?yàn)樗?的1.1倍,就是2.2倍縮放.

this.node.scale = 2;
var sby = cc.scaleBy(1,1.1);
this.node.runAction(sby);





10.fadeOut淡入,fadeIn淡出  原理就是改變透明度;

fadeTo漸變到指定的透明度

比如一個(gè)游戲人物死亡了,過一會(huì)他的尸體就慢慢消失.


淡入

//先讓透明度為0
this.node.opacity = 0;
var fin = cc.fadeIn(2);
this.node.runAction(fin);


淡出 就是透明度為0 實(shí)際上這個(gè)物體還是在的

var fout = cc.fadeOut(2);
this.node.runAction(fout);

指定透明度 

var fout = cc.fadeTo(1,128);
this.node.runAction(fout);




11.callFunc 執(zhí)行回調(diào)函數(shù)

這里會(huì)瞬間執(zhí)行這個(gè)函數(shù)動(dòng)作.

var func = cc.callFunc(function(){
console.log("call func actin!!!");
},this);
this.node.runAction(func);





12.sequence 順序執(zhí)行動(dòng)作,創(chuàng)建的動(dòng)作將按順序依次運(yùn)行

比如說我移動(dòng)一個(gè)物體之后,又要隱藏這個(gè)物體.

這時(shí)候就有多個(gè)action,這個(gè)相當(dāng)于動(dòng)作數(shù)組,依次執(zhí)行

var ac1 = cc.moveTo(1,1,100);
var ac2 = cc.fadeOut(0.5);
var seq = cc.sequence(ac1,ac2);
this.node.runAction(seq);


這時(shí)候回調(diào)函數(shù)在這里的作用就有用了,比如角色死亡漸漸

消失之后,透明度為0,但是物體還在,這時(shí)候就要用回調(diào)函數(shù)

來刪除這個(gè)節(jié)點(diǎn),或者做一些其他的內(nèi)容.

var ac1 = cc.moveTo(1,1,100);
var ac2 = cc.fadeOut(0.5);
var cfunc = cc.callFunc(function(){
console.log("我是最后一個(gè)動(dòng)作");
},this);
//將動(dòng)作添加到隊(duì)列
var seq = cc.sequence(ac1,ac2,cfunc);
this.node.runAction(seq);




13.一個(gè)節(jié)點(diǎn)可以同時(shí)運(yùn)行多個(gè)action,

比如一邊移動(dòng),一邊慢慢隱藏

var ac1 = cc.moveTo(2,1,100);
var ac2 = cc.fadeOut(0.5);
this.node.runAction(ac1);
this.node.runAction(ac2);





14.重復(fù)執(zhí)行一個(gè)動(dòng)作   cc.repeat 

參數(shù)1是重復(fù)的動(dòng)作,參數(shù)2是重復(fù)的次數(shù)

比如說我要他放大縮小然后重復(fù)執(zhí)行

var s1 = cc.scaleTo(0.8,1.1);
var s2 = cc.scaleTo(0.8,0.8);
var seq = cc.sequence([s1,s2]);
var rep = cc.repeat(seq,4);
this.node.runAction(rep);




15.永遠(yuǎn)重復(fù)執(zhí)行一個(gè)動(dòng)作 cc.repeatForever()

var s1 = cc.scaleTo(0.8,1.1);
var s2 = cc.scaleTo(0.8,0.8);
var seq = cc.sequence([s1,s2]);
var rep = cc.repeatForever(seq);
this.node.runAction(rep);






16.緩沖機(jī)制,緩動(dòng)動(dòng)作 easing

他和動(dòng)作執(zhí)行的時(shí)間是一致的.

回彈的效果,比如一個(gè)窗口打開,彈很大,然后又彈回一點(diǎn)

這些可以在API文檔里找到.cc.Node.動(dòng)作



測試一個(gè)常用的,一個(gè)界面飛出去彈出來.

cc.easeBackOut 快速移動(dòng)超出目標(biāo),然后慢慢回到目標(biāo)

var m = cc.moveTo(1,300,0).easing(cc.easeBackOut());
this.node.runAction(m);





17.stopAction停止運(yùn)行指定的動(dòng)作

var m = cc.rotateBy(3,360).easing(cc.easeCubicActionOut());
var rf = cc.repeatForever(m);
this.node.runAction(rf);
this.node.stopAction(rf);





18.stopAllActions停止運(yùn)行所有動(dòng)作

var m = cc.rotateBy(3,360).easing(cc.easeCubicActionOut());
var rf = cc.repeatForever(m);
this.node.runAction(rf);
this.node.stopAllActions();




19.延時(shí) cc.delayTime

比如我們有一個(gè)特效出來了,讓他3秒后刪除

//延時(shí)3秒鐘
var delay = cc.delayTime(3);
var fout = cc.fadeOut(0.5);
var end_func = cc.callFunc(function(){
console.log("我消失啦");
}.bind(this));
var seq = cc.sequence(delay,fout,end_func);
this.node.runAction(seq);





向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI