在遊戲製作的過程中,動作也是很重要的一個部分,比如角色的跳躍,移動等等
cocos2d-html5提供了很多動作,調用起來十分方便,喜歡用cocos2d這套引擎就是覺得在場景跳轉和動作方面省了很多事,而且效果也很好。
比較常用的有這麼幾個:
移動到 cc.MoveTo.create
移動 cc.MoveBy.create
縮放到 cc.ScaleTo.create
縮放 cc.ScaleBy.create
旋轉到 cc.RotateTo.create
旋轉 cc.RotateBy.create
跳躍到 cc.JumpTo.create
跳躍 cc.JumpBy.create
漸變出現 cc.FadeIn.create
漸變消失 cc.FadeOut.create
說明一下To和By的區別吧,To就是參數中要達到的那個位置或者效果,在設定的時間參數內完成,而By是每一步相對進行的,舉個例子說吧
cc.MoveTo是“移動到這裏",而cc.MoveBy則是“相對於之前點再移動”,通俗一點就是說這裏需要兩個座標pos1(x1,y1),pos2(x2,y2),如果是CCMoveTo的話,就是將對象由pos1移動到pos2,而cc.MoveBy則是說對象的終座標是在pos1的基礎上再加上(矢量相加)pos2,終座標pos3=pos1+pos2。
同時需要注意的是,帶By方法的都是支持reverse()方法,可以獲取其反向的動作。
var actionTo = cc.MoveTo.create(2, cc.p(300, 300));
sp.runAction(actionTo);
當然我比較懶,也覺得一個動作要定一個變量過於麻煩,所以可以整合到一起寫,比如這樣sp.runAction(cc.MoveTo.create(2, cc.p(300, 300)));
動作也是可以支持同時執行的
cc.Spawn.create
var action = cc.Spawn.create(
cc.JumpBy.create(2, cc.p(300, 0), 50, 4),
cc.RotateBy.create(2, 720));
sp.runAction(action);
或者依次執行
cc.Sequence.create
var action = cc.Sequence.create(
cc.RotateBy.create(3, 360),
cc.FadeOut.create(2))
);
或者重複執行動作
cc.Repeat.create
也可以永久重複執行
cc.RepeatForever.create
var act1 = cc.RotateTo.create(0.5, 90);
var act2 = cc.RotateTo.create(0.5, 0);
var seq = cc.Sequence.create(act1, act2);
var rep1 = cc.RepeatForever.create(seq);
var rep2 = cc.Repeat.create((seq.clone()), 4);
動作也是可以支持複製的,clone()方法動作中可以創建一個回調動作,比如移動動作完了之後我需要知道然後做別的事情
cc.CallFunc.create
var action = cc.Sequence.create(
cc.MoveBy.create(1, cc.p(100, 0)),
cc.CallFunc.create(this.onCallback1, this));
sp.runAction(action);
onCallback1:function () {
//doThings();
},
也可以讓動作延遲一段時間進行
cc.DelayTime.create
var action = cc.Sequence.create(
cc.DelayTime.create(1),
cc.CallFunc.create(this.repeatForever));
sp.runAction(action);
基本的動作差不多這些就足夠了,當然還有一些複雜的,可以翻翻看test例子中的代碼學習,動作中還有一個動作曲線和動作管理,後面的文章再介紹吧
寫到這裏我纔想起來,還沒有介紹精靈的自定義動畫。呵呵,下一章簡單介紹下吧~