遊戲中常常用到一些動畫,若是比較簡單的動畫則可通過Flash導出動畫的所有序列幀。
項目中則可用這些序列幀創建出動畫。
js代碼示例:
cc.spriteFrameCache.addSpriteFrames(frame.plist); //plist包含所有幀序列
var frameAni = new cc.Sprite();
frameAni.setPosition(cc.p(frameAni.width / 2, frameAni.height / 2));
frameAni.initWithSpriteFrameName("frame_01.png"); //設置初始狀態
//添加幀序列
var animation = new cc.Animation();
for (var i = 1; i <= 4; i++) {
var frameName = "frame_0" + i + ".png";
var spriteFrame = cc.spriteFrameCache.getSpriteFrame(frameName);
animation.addSpriteFrame(spriteFrame);
}
animation.setDelayPerUnit(0.05); //設置兩個幀播放時間(單位:秒)
animation.setRestoreOriginalFrame(true); //動畫執行後還原初始狀態
var action = cc.animate(animation);
frameAni.runAction(cc.repeatForever(action));
可以不難看出,就是先用Animation裝載所有幀序列,然後通過sprite去執行這個動作。而動作的實質就是
每隔一個時間間隔就去換這個幀,sprite就會渲染出相對應的幀。
需要注意的是這裏需要預加載plist文件(代碼第一行),如果你是散的碎圖的話,加載所有對應的png即可。