使用DragonBones遇到的問題
dragonBones好用歸好用
不過遇到問題時能參考的資料不多
(因為專題需要所以使用dragonBones一段時間了)
最近遇到的問題
1.沒辦法手動key關鍵幀
早期的版本可以透過「K」鍵key幀,現在則是透過偵測變化自動key幀
最近研究動畫時,我想做到每次做完動作後可以恢復到原本的姿勢
這部分以新版本來說就沒辦法透過key原始姿勢1幀輕鬆做到
原本想說fadeOut可以讓動作恢復,結果是會錯意。
於是我想到那麼就去監聽每次的動作COMPLETED後執行恢復到我設定的那個姿勢
2.監聽事件寫法
查看了一下dragonBones的API
上網查了一下用法,試著寫了,不過它都會出現「this.armatureDisplay.armature.addEventListener is not a function 」的錯誤訊息。
最後查到了一篇文章 --- https://blog.csdn.net/qq_35641923/article/details/80772806
看來 addEventListener 的用法已經廢棄了
而dragonBones API 更新時間為 2019-7 怎麼還會放在上面使用呢?!
這是我嘗試後成功的寫法:
let textureImg = resources[ResourcesManager.Character_tex].texture; //紋理圖png
let textureData = character_tex_json//紋理圖data
let skeletonData = character_ske_json //骨骼data
this.factory = new dragonBones.PixiFactory();
this.factory.parseDragonBonesData(skeletonData);
this.factory.parseTextureAtlasData(textureData, textureImg);
this.armatureDisplay = this.factory.buildArmatureDisplay('Boy');
// this.armatureDisplay.addEventListener(dragonBones.EventObject.COMPLETE,()=>{
// this.armatureDisplay.animation.gotoAndStopByTime('clapHand',0)
// })
this.armatureDisplay.armature.eventDispatcher
.addDBEventListener(dragonBones.EventObject.COMPLETE,this.animationEventHandler,this)
animationEventHandler(event) {
if (event.type === dragonBones.EventObject.COMPLETE) {
if (event.animationState.name === "clapHand") {
console.log("clapHand 動作播放完畢!!!");
//TODO:
}
}
}
Ban掉的地方是我原本測試用的。
接著嘗試了上面找到文章的用法:
this.armatureDisplay.eventDispatcher.addDBEventListener(dragonBones.EventObject.COMPLETE, this.animationEventHandler,this)
不過還是無法~~~
最後看到了這篇文章 --- https://www.jianshu.com/p/5e65e69ec3f4
嘗試後用armatureDisplay.armature才成功!
https://bbs.egret.com/thread-27369-1-1.html 找到以前的文章說明:
// 用 armatureDisplay 來做跟平台相關的操作,比如事件渲染相關等。
// 用 armatureDisplay.armature, armatureDisplay.animation 來做跟 db 相關的操作,比如播放動畫獲取骨骼或插槽或換裝等。
可是看了一下
armatureDisplay | armature |
留言
張貼留言