cocos2d-x擷取當前動畫是第幾幀

來源:互聯網
上載者:User
這段時間新項目涉及到很多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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.