不得不說cocos2d-js的文檔實在是少,骨骼動畫的載入和C++版本的好像還有些不同不能直接依樣畫葫蘆。
一個由cocos studio編輯生成的骨骼動畫一般會包含如下幾個文件:
- .ExportJson文件
- .plist文件
- .png文件
ExportJson文件包含了骨骼動畫的動作和所要用到的資源的名稱,plist文件負責切分png圖片的各個區域形成邏輯上的一張張圖片,其實是把要用的圖片打包的單個png文件中,然后把原來的文件名稱和區域信息記錄到plist中。ExportJson中包含了對plist文件的名稱的描述體現在其config_file_path字段。那么照理來說導入骨骼動畫只要顯式加載一個ExportJson文件就行了剩下的讓引擎去做吧?可惜不是這樣,如果不在resource中指定骨骼動畫配套的plist那么在加載骨骼動畫的時候就會報錯。下面記錄一個骨骼動畫使用的過程:
0. 修改項目配置文件添加extension模塊
"modules" : ["cocos2d", "extensions"],
使用cocos studio工具生成的資源大部分都要把extensions模塊也加入到項目中來,這些模塊處於ccs命名空間中
1. 向resource.js文件添加骨骼動畫資源描述
wolf_animation: "res/monster/wolf/wolf.ExportJson",
wolf_plist: "res/monster/wolf/wolf0.plist"
注意ExportJson和對應plist文件都要在這里寫出
2. 加載骨骼動畫資源
var size = cc.winSize; var scale = 0.5; ccs.armatureDataManager.addArmatureFileInfo(res.wolf_animation); var wolfAnimation = new ccs.Armature("wolf"); wolfAnimation.setScale(scale); wolfAnimation.setPosition(size.width / 2 + 150, size.height / 2); wolfAnimation.animation.play("Animation1"); this.addChild(wolfAnimation);
這里addArmatureFileInfo是一個同步過程有對應的異步版本,要用骨骼動畫前需要執行一次這個方法,它會讀入骨骼動畫數據並把要用到的資源緩存起來。這樣執行多次
new ccs.Armature("wolf");
其實不要再執行addArmatureFileInfo了。new ccs.Armature()中的參數要和骨骼動畫項目中ExportJson指定的名稱一致即其armature_data.name
