animation組件
1: 代碼中獲得cc.Animation組件:
編輯器關聯;
代碼獲取組件;
2: Animation組件主要的方法:
play([name], [start_time]), 播放指定的動畫,如果沒有制定就播放默認的動畫;
playAdditive: 與play一樣,但是不會停止當前播放的動畫;
stop([name]): 停止指定的動畫,如果沒有指定名字就停止當前播放的動畫;
pause/resume: 暫停喚醒動畫;
getClips: 返回組件里面帶的AnimationClip數組
3: Animation重要的屬性:
defaultClip: 默認的動畫剪輯;
currentClip: 當前播放的動畫剪輯;
4: Animation播放事件: 動畫組件對象來監聽on,不是節點
play : 開始播放時 stop : 停止播放時 pause : 暫停播放時 resume : 恢復播放時
lastframe : 假如動畫循環次數大于 1,當動畫播放到最后一幀時 finished : 動畫播放完成時
動畫里面調用代碼函數
1:插入一個時間到動畫里面;
2: 編輯這個時間觸發的函數: 名字 + 參數
3: 遍歷當前動畫組件所掛節點上面所有的腳本或組件,根據這個名字來觸發函數;
動畫編輯器里插入test_anima_event事件,動畫節點掛的節點的腳本里就要有 對應名字 的方法才能觸發(這種方法容易不知道事件的來源,不推薦)
4: 要慎用,代碼和動畫之間不易太多的調用;
動畫系統支持動態注冊回調事件
var animation = this.node.getComponent(cc.Animation);
// 注冊
animation.on('play', this.onPlay, this);
// 取消注冊
animation.off('play', this.onPlay, this);
// 對單個 cc.AnimationState 注冊回調
var anim1 = animation.getAnimationState('anim1');
anim1.on('lastframe', this.onLastFrame, this);
// 動態創建 Animation Clip:
var animation = this.node.getComponent(cc.Animation);
// frames 這是一個 SpriteFrame 的數組.
var clip = cc.AnimationClip.createWithSpriteFrames(frames, 17);
clip.name = "anim_run";
clip.warpMode = cc.WarpMode.Loop;
// 添加幀事件
clip.events.push({
frame: 1, // 準確的時間,以秒為單位。這里表示將在動畫播放到 1s 時觸發事件
func: "frameEvent", // 回調函數名稱
params: [1, "hello"] // 回調參數
});
animation.addClip(clip);
animation.play('anim_run');