1. 程式人生 > >關於cocos2d序列幀動畫plist檔案的建立

關於cocos2d序列幀動畫plist檔案的建立

轉載請註明出處

用過的人都知道,cocos2d的動畫編輯器是多麼的坑,自從cocos2d支援Animation後,開始使用Animation動畫了。關於Animation的使用網上也有很多,但是我看了一下,主流的就是兩種方法,一是:手動新增,將plist檔案裡的精靈幀一個一個順序讀到Animation類中,然後呼叫Animate類建立動畫;二是:檔案新增,將plist檔案新增到AnimationCache中,然後呼叫Animate建立動畫。具體實現的方法官網的文件都有,(官網文件連結http://www.cocos.com/docs/native/v3/frame-animation/zh.html)這裡我簡答貼一下第二種實現方式:

auto cache = AnimationCache::getInstance();
   cache->addAnimationsWithFile("animations/animations-2.plist");
    auto animation2 = cache->getAnimation("dance_1");

    auto action2 = Animate::create(animation2);
    _tamara->runAction(Sequence::create(action2, action2->reverse(), NULL));
程式碼比較簡單,這裡不做過多解釋。有另外一個問題需要注意,就是方法一和方法二載入的plist是不同的plist檔案!
plist檔案的分類參見以下文章:http://zengrong.net/post/1981.htm    和    http://zengrong.net/post/2006.htm
關於帶有動畫序列幀的plist檔案的建立,個人覺得從TexturePacker中是無法匯出的,TexturePacker中匯出的plist檔案都是影象紋理
檔案,帶有動畫序列幀的plist檔案我目前還沒有找到比較好的建立方式,在這裡就介紹一下手動建立動畫序列幀plist檔案的方法吧。
準備檔案:animationTest.plist(影象紋理plist檔案),animationTest.png(這是我準備的素材,大家可以換成自己的)   
官方其實就有帶有動畫序列幀的plist檔案,在tests\cpp-tests\Resources\animations資料夾下的animation-2.plist就是的。
用文字編輯器(推薦notepad++)開啟animation-2.plist,看完上面的文章,檔案格式還是很好懂的,這裡我也不多說了,直接說哪裡需要
修改吧。
首先,dance_1是動畫名稱,可以根據自己命名的習慣給自己的動畫命名,然後是延遲播放和迴圈什麼的根據需要設定一下,接著把
grossini_dance_01.png,grossini_dance_02.png等圖片名換成自己的圖片,自己的這個圖片必須要是打包出來的,比如這裡我的圖片
打包成animationTest.png,animation.png下包含了01.png,02.png,03.png,等等,需要幾幀就放幾幀,注意最後一幀需要新增
<key>notification</key>
<dict>
<key>lastframe</key>
<true/>
</dict>
資訊,表示這是最後一幀。
再然後需要注意的地方就是在結尾引用的地方,
<array>
<string>grossini.plist</string>
<string>grossini_blue.plist</string>
<string>grossini_family.plist</string>
</array>
array裡面放上面引用的圖片的plist,比如我之前用的是animationTest.png,那麼我在這裡放入animationTest.plist就可以了。
儲存,在程式碼中檔案載入就可以播放了。
這種方法最明顯的缺點就是不夠直觀,製作動畫也比較麻煩,大工程肯定不行,不過開發一個這樣的plist生成器應該不難,以後有時間的話,
我可以考慮做一個生成器(不過估計沒時間做,哈哈哈,就算要做,也應該是專案特別需要了吧)不過對於學習和個人開發使用的一些比較
簡單的動畫還是可以用的。如果大家有什麼更好的方法,歡迎提出來。