升级到 2.0.7 及以上版本 使用龙骨动画,无法接收到 complete 回调(包含最新版本 2.0.8)

注册事件动画

       this.armatureDisplay = this.dragonNode.getComponent(dragonBones.ArmatureDisplay);
       this.armatureDisplay.addEventListener(dragonBones.EventObject.START, 
       this.animationEventHandler.bind(this), this);
       this.armatureDisplay.addEventListener(dragonBones.EventObject.COMPLETE, 
       this.animationEventHandler.bind(this), this);

播放事件动画

this.armatureDisplay.playAnimation("stop", 1);

恳请引擎组各位大大,提供帮助

这个问题2.0.7,就出现了,原因未知

在2.0.8的范例合集中,DragonBonesCtrl.js里面加上如下监听代码,回调正常,没有问题

        this._armatureDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event)=>{
            cc.log("complete");
        },this)
        this._armatureDisplay.addEventListener(dragonBones.EventObject.START, (event)=>{
            cc.log("start");
        },this)
        this._armatureDisplay.addEventListener(dragonBones.EventObject.LOOP_COMPLETE, (event)=>{
            cc.log("loop complete");
        },this)

2.0.7也是应该是正常的,2.0.8并没有进行关于这方面的修改。
可以参考一下范例合集中关于事件监听的写法

建议检查一下使用的代码,是否是使用上面的错误?

龙骨动画版本有特别要求吗?

关键是2.0.6以及以下版本是没问题的,我这是通过

cc.loader.loadResDir(dragonRes, function (err, assets),加载的

支持 DragonBones v5.6.2 及以下

用2.0.8范例合集中的DragonMesh测试了一下,通过cc.loader.loadRes加载后,添加事件监听,也是没问题的。
start,loog complete,complete都可以接收到

    onComplete (err, res) {
        if (err) cc.error(err);
        this.dragonBone.dragonAtlasAsset = res;
        this.dragonBone.armatureName = 'armatureName';


        this.dragonBone.addEventListener(dragonBones.EventObject.COMPLETE, (event)=>{
            cc.log("complete");
        },this)
        this.dragonBone.addEventListener(dragonBones.EventObject.START, (event)=>{
            cc.log("start");
        },this)
        this.dragonBone.addEventListener(dragonBones.EventObject.LOOP_COMPLETE, (event)=>{
            cc.log("loop complete");
        },this)

        this.dragonBone.playAnimation('stand', 1);
    }

好的,我再试试,多谢

再咨询个问题,2.0.7版本及以上 complete 这个回掉,当播放完一次动画后,是否就remove掉了,播放这个龙骨的其它动画,不会响应吧?是否得重新注册?

会响应,不需要重新注册。你自己可以试一下就知道了

我的龙骨也出现了LOOP_COMPLETE没法接收这个问题,是我的龙骨动画导出姿势不对吗

你的问题解决了吗?

我自己试了,确实得重新注册complete

调用动画前,注册complete,就是不知道会不会内存泄漏

改这个函数就可以了,event.animationState.name