2013-09-23更新:升級到DragonBone2.2.2 for cocos2d-x,支持導出PLIST文件。
我寫過一篇 在cocos2d-x中使用DragonBones ,這篇文章中提到了DragonBones插件。本篇是一個補充。
插件問題
在 CocoStudio官方下載頁面 中提供了一個DragonBones插件,用於導出cocos2d-x可以識別的骨骼動畫格式。
但是,這個插件有個問題。
在導出時,如果使用“Zip(XML和分開的PNG)”類型(事實上,對於cocos2d-x來說,只能選擇這個選項),同時設置“導出縮放比”選項不爲1的時候,導出的元數據文件中的座標都沒有經過縮放。
這將導致動畫在播放的時候出現問題,就像這樣:
其實,這個問題並不是由於修改DragonBones所形成的,而是原來的DragonBones2.0就存在這個問題。
如果你有興趣研究的話,可以看這裏 ExportDataCommand.as ,這裏判斷了 _exportType
值爲4的情況下不縮放座標。而“Zip(XML和分開的PNG)”就代表4。
另外,這個插件是基於2.0版本,而目前的DragonBones最新版本是2.3。當然,由於 2.3的DataFormat改動太大 ,暫時不能使用v2.3版本進行修改。但v2.2是可以的。
如果你再次有興趣的話,可以找到cocos2d-x負責解析骨骼動畫元數據的類 [cocos2d-x]\extensions\CCArmature\utils\CCDataReaderHelper.cpp
,通過修改它,來支持新的格式。
DragonBone2.2.2 for cocos2d-x
基於上面的原因,我以DragonBones2.2版本爲基礎製作了這個插件,並重新打包發佈。
-
插件下載:
DragonBones2.2.2 for cocos2d-x (1.1 MiB, 415 hits)
-
插件下載(github):
DragonBones2.2.2 for cocos2d-x (github) (1.1 MiB, 345 hits)
- 項目源碼:DragonBones2.2 for cocos2d-x
我做的工作並不多,只是花了一些時間理解了DragonBonesDesignPanel的結構。
- 這個項目包含了 SkeletonAnimationLibrary 和 SkeletonAnimationDesignPanel 項目v2.2的內容,做了少量的修改;
-
jsfl的修改,直接比較 這3個文件即可。其中
skeleton.jsfl.original
是原始文件,skeleton.jsfl.20cocos2dx
是2.0修改版提供的文件,skeketon.jsfl
是我修改的文件; - 導出面板中,我增加了兩種導出類型 “Zip(XML and PNGs, for cocos2d-x)”、“Zip(XML+PLIST+PNG, for cocos2d-x)”;
- 如果選擇“Zip(XML+PLIST+PNG, for cocos2d-x)”,可以直接輸出XML、PLIST和拼合後的PNG文件,這樣就不必再使用其他工具將分離的PNG拼合了;
- 我修改了導入代碼,現在也能在DesignPanel中導入“Zip(XML and PNGs, for cocos2d-x)”類型導出的資源;
- 其他的修改,請直接比較源碼;
- 如何使用可以看這裏: 在cocos2d-x中使用DragonBones。
感謝 DragonBones Team 帶來這樣優秀的軟件;
感謝對 DragonBones2.0 進行修改的程序員;
希望這個項目對你們有用。