DragonBones是一套開源的 2D骨骼動畫框架和工具,它包含了基于Flash Pro的骨骼動畫編輯面板DragonBonesDesignPanel及骨骼動畫ActionScript框架。它可以讓開發(fā)者運用熟悉的Flash Pro元件及時間軸編輯方式,快速創(chuàng)建2D骨骼動畫,并運用到Flash或其他技術(shù)的應(yīng)用中。
Dragon Bones插件特點:
動畫基于Flash pro時間軸,可以使用Flash傳統(tǒng)動畫方式制作游戲動畫;
骨骼綁定可以讓動畫更精準,更真實自然,并可通過程序動態(tài)控制;
可設(shè)置單個骨骼的動畫時間縮放和延時播放,使用較少的關(guān)鍵幀就可以表現(xiàn)復(fù)雜生動的動畫效果;
動畫各部分采用拼接方式,動畫有緩動補間,占用位圖/內(nèi)存資源少;
骨骼顯示對象與骨骼的邏輯分離,可在不影響動畫播放的情況下動態(tài)更換;
能方便用于傳統(tǒng)DisplayList、Starling及其他技術(shù)的2D應(yīng)用。
實用于解決cocos2d-x動畫實現(xiàn),可以在少量關(guān)鍵幀,資源,內(nèi)存的情況下實現(xiàn)平滑的動畫,自動補間,從此以后動畫實現(xiàn)就交給美術(shù)吧,因為只需要flash上編輯動畫就可以在cocos2d-x上運行。這個包里面是CSArmature喝DragonBones2.0,用過的都知道這兩個要版本對應(yīng)。
如果想要在cocos2d-x中用的話,必須在flash->dragonbones插件下導(dǎo)出使用“xml和單個的png圖片”選項,你會得到一個和你的fla文件一樣名字的壓縮包。解壓后能看到一個texutre文件夾和一個名為texture.xml的文件。將texture文件夾下的散圖用TexturePacker打包、發(fā)布,得到png圖片和plist文件。將這三個文件重命名為你想要的文件名,放入工程中,其他的事情網(wǎng)上就有很多的例子了,包里面也有現(xiàn)成的demo供參考。
軟件包包含內(nèi)容:
骨骼動畫庫的源代碼。
骨骼動畫設(shè)計小組,一個基于Flash Pro中的延伸。
演示項目顯示如何使用DragonBones。
針對程序開發(fā)使用教程:
在設(shè)計師用骨骼動畫編輯面板導(dǎo)出好相關(guān)格式數(shù)據(jù)之后,程序開發(fā)者就可以運用DragonBones的開源動畫框架將數(shù)據(jù)資源導(dǎo)入到程序并讓動畫角色運動起來。只需幾步操作,非常簡單!
接下來,你將了解如何在傳統(tǒng)DisplayList或支持GPU加速的Starling框架中調(diào)用骨骼動畫。
下載Skeleton Animation Library,將這個包導(dǎo)入至你的開發(fā)項目中。
在開始代碼前,讓我們了解下骨骼動畫框架的基本概念。
Factory: 這是構(gòu)建骨骼動畫的基礎(chǔ)。它負責(zé)從前面骨骼面板導(dǎo)出的資源中解析數(shù)據(jù)格式和準備圖像資源,并且通過它創(chuàng)建骨骼容器Armature。
Armature: 我們可以把它想像為一個容器,它對應(yīng)在Flash Pro中編輯并通過骨骼面板導(dǎo)出的一個MoiveClip。通過Armature來對各骨骼進行管理,播放動畫等。
現(xiàn)在我們來看看在在傳統(tǒng)DisplayList顯示模式中添加骨骼的示例。打開此教程對應(yīng)的源文件DB_Tutorial_Walk_DisplayList.as。
首先,將骨骼面板導(dǎo)出的資源嵌入到項目。
此處嵌入的資源是由Flash Pro骨骼動畫編輯面板導(dǎo)出的合并了XML數(shù)據(jù)文件的PNG文件或SWF文件。當(dāng)然,你也可以通過動態(tài)加載的方式在項目運行時候?qū)崟r載入資源。
創(chuàng)建factory,并通過fromRawData方法解析載入的資源格式,當(dāng)解析完畢后交給對應(yīng)事件textureCompleteHandler處理。
事件函數(shù)textureCompleteHandler中,首先用buildArmature方法構(gòu)建骨骼動畫容器:
將容器的顯示內(nèi)容armature.display添加到場景:
將armature添加到WorldClork ,用于動畫更新:
指定要播放骨骼的某個動作:
最后,為ENTER_FRAME事件函數(shù)中添加WorldClock.clock.advanceTime(-1)方法,讓SWF每幀渲染時候更新骨骼動畫。
OK,僅此幾行代碼,你就可以將骨骼動畫添加到已有項目。很簡單,不是么?:)
下面我們聊聊在Starling中添加骨骼動畫的方法。Starling是一個非常不錯的開源游戲框架,它可以幫助你快速創(chuàng)建基于Stage 3D技術(shù)GPU加速的2D游戲。如果你對它還不了解,請訪問Starling的官方網(wǎng)站:http://starlingframework.org。
使用Starling的用戶或許對用Sprite Sheet的位圖序列來構(gòu)建動畫非常熟悉,這種方式最大問題是對于復(fù)雜動畫會占用過多內(nèi)存。以下圖為例,一個簡單的行走動作,就會占用一大張位圖材質(zhì)。
而DragonBones解決了這個問題,不但僅需要少量骨骼素材,而且可以讓動畫更加豐富生動。
DragonBones可以完美的結(jié)合Starling,創(chuàng)建基于GPU加速的2D骨骼動畫。
打開本示例的項目DBStarlingWalk.as源碼你會發(fā)現(xiàn),我們創(chuàng)建了一個基于Starling的factory:
而余下的代碼,跟上個DisplayList的示例代碼完全一致。
關(guān)于Starling中嵌入的骨骼動畫素材資源,可以是合并骨骼XML數(shù)據(jù)的PNG格式,也可以是合并XML數(shù)據(jù)的SWF格式。對于SWF格式的矢量資源,Skeleton Animation Framework會自動在程序運行時轉(zhuǎn)換矢量為位圖材質(zhì),節(jié)省你項目尺寸。