DragonBones是Adobe支持的一個開源項目,用於制作和播放骨骼動畫,官網地址是:http://dragonbones.effecthub.com/。DragonBones首先在Flash和Starling引擎上使用,后續繼續推廣支持多個游戲引擎,現在已經能很好的支持HTML5和cocos2d-x。
DragonBones提供了Flash的插件,用於生成骨骼動畫文件,稱為DragonBonesDesignPanel,結合Flash和DragonBonesDesignPanel可以很方便的完成骨骼動畫制作。相對而言,DragonBones在制作上比Cocos Studio的動畫編輯器更方便,也更符合設計師的使用習慣,因為大部分設計師都有Flash使用經驗。
由於cocos2d-js V3.1只支持2.0到2.2版本的DragonBonesDesignPanel,所以我們不能直接使用官網提供的最新版DragonBonesDesignPanel。我們只能使用cocos團隊修改過的DragonBonesDesignPanel V2.0,訪問http://www.cocoachina.com/bbs/read.php?tid=154886下載。說起這個2.0版本的下載地址,一把辛酸淚啊。只相隔那么一年,cocos的論壇由於做了合並,原來的帖子地址都變了,而DragonBones這種外來物種,沒有足夠地位,cocos團隊都忘記這個DragonBonesDesignPanel V2.0了。筆者我好不容易才翻箱倒櫃找到這個下載地址。
另外,網上也有高手(zrong)制作了專門支持cocos2d的DragonBonesDesignPanel V2.2版本,下載地址是:https://github.com/zrong/dragonbones-for-cocos2d-x/tree/master/build。
額外提醒一下,安裝DragonBonesDesignPanel后,這個插件會自動升級,如果過一段時間發現cocos2d-js無法加載DragonBonesDesignPanel導出的文件,就要拿出舊版的安裝文件重新安裝了。
另外,由於DragonBones和Cocos2d-js都是開源的, 所以如果還有進一步問題,我們可以學習一下zrong,自己動手修改代碼。當然,你需要知道怎么用Flash builder。。。說到DragonBones源代碼也是一個糾結的事,官方並沒有放出所有歷史版本,害得我也是累死累活的才找到V2.2和V2.0的版本回來做比較。分享給大家:
只需要按照DragonBones的制作規范制作動畫,再使用修改版的DragonBonesDesignPanel,就可以輕松在cocos2d-js加載DragonBones骨骼動畫。
如果使用zrong的版本,導出時直接選擇cocos2d版本,導出的是plist、大圖和xml;而cocos提供的2.0版本則導出碎圖+xml,我們還需要另行把碎圖變成Spritesheet。
加載的代碼很簡單:
ccs.armatureDataManager.addArmatureFileInfo("res/dragonbones/skeleton.png", "res/dragonbones/skeleton.plist", "res/dragonbones/skeleton.xml"); var armature = new ccs.Armature("Dragon"); armature.getAnimation().play("stand"); armature.getAnimation().setSpeedScale(24/60);
播放時,大家可能會發現卡頓或跳動的情況,那是因為在cocos2d-js中使用DragonBones,還有一個額外的規范。每個動作的最后一幀需要把所有的部件回位,否則就出現跳動。因為最后一幀到第一幀這個過程,DragonBones自己的運行庫會做平緩過度,而cocos2d-js解析則沒有這個過度,所以我們就要自己動手加一幀了。
湊合着,還是可以用起來了。不過,cocos2d-js肯定比不上DragonBones官方自己的運行庫了,而現在DragonBones已經有C++版本了:https://github.com/DragonBones/DragonBonesCPP,說白了就是為了支持cocos2d-x。我們可以考慮自行加上js綁定,從而讓cocos2d-js也用上最新版的DragonBones。咳咳,當然,這個工作得有需求推動啊,如果有時間的話,筆者也許會嘗試一下吧。