【木頭Cocos2d-x 036】我不需要知道你有多少幀之動畫建立輔助類

來源:互聯網
上載者:User

我不需要知道你有多少幀之動畫建立輔助類

今天心情不好,所以我可能會比平時嘮叨。

(小若:你心情不好,那為毛要連累我們!)

 

OK,今天不是寫教程,只是想給大家分享一下簡單的心得。想必大家都覺得Cocos2d-x要建立一個CCAnimation還是有點繁瑣的,是的,通常我們都會建立一個輔助類,這樣就可以說省去重複的工作了。

(小若:快點進入正題,我也沒有心情吐槽。)

 

 

笨木頭花心貢獻,啥?花心?不呢,是用心~

轉載請註明,原文地址:http://blog.csdn.net/musicvs/article/details/8567220

 

本文:

 

 

比如,我們通常會看到這樣的輔助類:

CCAnimation* AnimationUtil::createAnimationWithSingleName( const char* singleName, int iFrameNum ) {CCSpriteFrameCache* spriteFrameCache = CCSpriteFrameCache::sharedSpriteFrameCache();CCSpriteFrame* frame = NULL;CCArray* frameArray = CCArray::create();for(int i = 1; i <= iFrameNum; i++){frame = spriteFrameCache->spriteFrameByName(CCString::createWithFormat("%s%d.png", singleName, i)->getCString());frameArray->addObject(frame);} return CCAnimation::createWithSpriteFrames(frameArray);}

當然了,我預設動作圖片都是用TexturePacker打包過的,這不在本文的討論範圍內。

(小若:我不懂,難道我還會告訴你?)

 

這是我們用到的圖片資源:

 

這是圖片對應的設定檔,大家可以雙擊開啟看看:

 

(小若:啊!看你妹紙啊!怎麼雙擊啊,你擊給我看啊!明明是圖片啊好不好!)

由於hero1.plist檔案太長了,我就不貼出來了,大家自己隨便弄一個動作資源吧。

(小若:你今天的心情是有多不好。。。)

 

然後試試使用這個函數:

CCAnimation* heroAnim = AnimationUtil::sharedAnimationUtil()->createAnimationWithSingleName("hero1_atk", 6);heroAnim->setLoops(-1);heroAnim->setDelayPerUnit(0.1f);sprite->runAction(CCAnimate::create(heroAnim));

 

挺簡單的,挺好的,指定了圖片資源的名稱,指定了圖片資源的幀數,然後createAnimationWithSingleName就會建立好CCAnimation對象。這個方法在百度一搜,也能搜到不少。

這是一個很不錯的方法,只需用一句話就能建立一個動畫對象,很好,那麼,本次教程就到此結束了。

(小若:總感覺有什麼不對勁。。。。不對啊!你不是要告訴我們更好的方法嗎?!)

 

 

不過,有個更方便的方法:

CCAnimation* AnimationUtil::createAnimationWithSingleName( const char* singleName ) {CCSpriteFrameCache* spriteFrameCache = CCSpriteFrameCache::sharedSpriteFrameCache();int index = 1;CCSpriteFrame* frame = NULL;CCArray* frameArray = CCArray::create();do {frame = spriteFrameCache->spriteFrameByName(CCString::createWithFormat("%s%d.png", singleName, index)->getCString());if(frame == NULL) {break;}frameArray->addObject(frame);index++;} while (true);return CCAnimation::createWithSpriteFrames(frameArray);}

 

和之前的方法唯一的區別就是:

1. For迴圈換成了do while迴圈

2. 不需要指定幀數

(小若:唯一的區別竟然有兩點。。。唯一。。。唯一是這樣的嗎!唯一那就應該只有一點啊!)

 

 

這個函數會根據指定的資源名稱一直載入圖片幀,直到遇到空值為止,雖然這有點投機取巧的味道,但是可以省去一件很麻煩的事情,那就是:指定動畫的幀數。

我們把圖片用TexturePacker打包好之後,不可能每次載入一個動畫,就開啟pilist檔案去看看這個動畫有多少幀吧?反正我是覺得這樣好麻煩,所以就想出這個投機的方法。

僅供參考~!

好了,其實我不太想發表這篇文章的,我也知道寫得不好(心情實在糟糕,抱歉),但是我怕改天忘了,所以還是寫了。

(小若:就算你這麼說,我也不會原諒你的!)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.