這段時間新項目涉及到很多animation,有時要知道當前動畫播放至了第幾幀,那麼如何擷取是第幾幀呢?
有一個很齪的方法,就是根據時間判斷,因為每一幀的時間我們是預先定了的,所以自己設定schedule多少時間之後開始執行。
還有一個好點的辦法,就是真的擷取到是第幾幀:
假設有一個CCAnimation* anim,由5張圖組成。
將這個anim封裝成CCAnimate* animate。使用的時侯sprite->runAction(animate),播放動畫。
這裡我們來擷取第幾幀:
int currentAnimIndex = 0; //精靈當前播放的是第幾幀
for(int i = 0; i < 5; i++)
{
//5張圖5幀
if(prite->displayedFrame() == anim->getFrames()->getObjectAtIndex(i))
{
//這個i返回的只是一個索引,如果幀數是從1開始計算就要+1
currentAnimIndex = i+1;
}
}
prite->displayedFrame()擷取的是當前精靈動畫所顯示的幀精靈指(CCSpriteFrame).
anim->getFrames()獲得的是整個動畫所儲存的幀精靈指標數組(CCSpriteFrame)
其實我們建立animation時所添加進去的圖片檔案都會轉化成CCSpriteFrame儲存起來。
animation->getFrames()->getObjectAtIndex(i)擷取的是animation中幀精靈數組中某個索引的元素,這個元素也是CCSpriteFrame.
擷取的原理就是,我通過sprite->displayedFrame()獲得我當前精靈所播放的CCSpriteFrame,然後去跟我的動畫數組(CCSpriteFrame數組)去做比較,取得對應元素在數組中的下標從而擷取當前精靈播放的是第幾幀。
20130327更新 如果無法擷取第幾幀請看這裡 http://blog.csdn.net/yanghuiliu/article/details/8728443