解决 白鹭引擎 egret 龙骨动画 Deprecated 已废弃

官方文档中龙骨动画的调用方法和事件监听方法,在实际项目中都会提示已废弃,在网上也没找到一个讨论和解决这个问题的帖子,就自己去摸索了一下,下面贴出解决方法。


这是网上找到的比较常见的写法:

private createGameScene(): void {

    var dragonbonesData = RES.getRes( "RobotGame_1_json" );
    var textureData = RES.getRes( "texture_json" );
    var texture = RES.getRes( "texture_png" );

    var dragonbonesFactory:dragonBones.EgretFactory = new dragonBones.EgretFactory();
    dragonbonesFactory.addDragonBonesData(dragonBones.DataParser.parseDragonBonesData(dragonbonesData));
    dragonbonesFactory.addTextureAtlas(new dragonBones.EgretTextureAtlas(texture,textureData));  
    var armature: dragonBones.Armature = dragonbonesFactory.buildArmature("robot"); 

    var armatureDisplay = this.armature.getDisplay();
    this.addChild(armatureDisplay);  

    
    armatureDisplay.x = 200;  
    armatureDisplay.y = 300;  
    armatureDisplay.scaleX = 0.5;  
    armatureDisplay.scaleY = 0.5;  

    dragonBones.WorldClock.clock.add( armature );  
    armature.animation.gotoAndPlay("Run");  

    egret.Ticker.getInstance().register(function(frameTime:number){
        dragonBones.WorldClock.clock.advanceTime(0.01)
    },this);
    
    armature.addEventListener( dragonBones.AnimationEvent.START, this.startPlay,this);
    armature.addEventListener( dragonBones.AnimationEvent.LOOP_COMPLETE, this.loop_com,this);
    armature.addEventListener( dragonBones.FrameEvent.ANIMATION_FRAME_EVENT, this.frame_event,this);
}

private startPlay(evt:dragonBones.ArmatureEvent)
    {
        console.log( "armature 开始播放动画!");
    }
private loop_com(evt:dragonBones.ArmatureEvent)
    {
        console.log( "armature 动画播放完一轮完成!");
    }
private frame_event(evt:dragonBones.FrameEvent)
    {
        console.log( "armature 播放到了一个关键帧! 帧标签为:",evt.frameLabel);
    }
    

private createGameScene(): void {

    var dragonbonesData = RES.getRes( "RobotGame_1_json" );
    var textureData = RES.getRes( "texture_json" );
    var texture = RES.getRes( "texture_png" );

    var dragonbonesFactory:dragonBones.EgretFactory = new dragonBones.EgretFactory();
    dragonbonesFactory.addDragonBonesData(dragonBones.DataParser.parseDragonBonesData(dragonbonesData));
    dragonbonesFactory.addTextureAtlas(new dragonBones.EgretTextureAtlas(texture,textureData));  
    var armature: dragonBones.Armature = dragonbonesFactory.buildArmature("robot"); 

    var armatureDisplay = this.armature.getDisplay();
    this.addChild(armatureDisplay);  

    
    armatureDisplay.x = 200;  
    armatureDisplay.y = 300;  
    armatureDisplay.scaleX = 0.5;  
    armatureDisplay.scaleY = 0.5;  

    dragonBones.WorldClock.clock.add( armature );  
    armature.animation.gotoAndPlay("Run");  

    egret.Ticker.getInstance().register(function(frameTime:number){
        dragonBones.WorldClock.clock.advanceTime(0.01)
    },this);
    
    armature.addEventListener( dragonBones.AnimationEvent.START, this.startPlay,this);
    armature.addEventListener( dragonBones.AnimationEvent.LOOP_COMPLETE, this.loop_com,this);
    armature.addEventListener( dragonBones.FrameEvent.ANIMATION_FRAME_EVENT, this.frame_event,this);
}

private startPlay(evt:dragonBones.ArmatureEvent)
    {
        console.log( "armature 开始播放动画!");
    }
private loop_com(evt:dragonBones.ArmatureEvent)
    {
        console.log( "armature 动画播放完一轮完成!");
    }
private frame_event(evt:dragonBones.FrameEvent)
    {
        console.log( "armature 播放到了一个关键帧! 帧标签为:",evt.frameLabel);
    }


红色部分为已废弃代码,下面绿色为对应修改后的代码:

private createGameScene(): void {

    var dragonbonesData = RES.getRes( "RobotGame_1_json" );
    var textureData = RES.getRes( "texture_json" );
    var texture = RES.getRes( "texture_png" );

    var dragonbonesFactory:dragonBones.EgretFactory = new dragonBones.EgretFactory();
    //dragonbonesFactory为new dragonBones.EgretFactory() 变量,后面需要调用

    dragonbonesFactory.addDragonBonesData(dragonbonesFactory.parseDragonBonesData(dragonbonesData));
    dragonbonesFactory.addTextureAtlas(dragonbonesFactory.parseTextureAtlasData(texture,textureData));  
    var armature: dragonBones.Armature = dragonbonesFactory.buildArmature("robot"); 

    var armatureDisplay = this.armature.display;
    this.addChild(armatureDisplay);  

    
    armatureDisplay.x = 200;  
    armatureDisplay.y = 300;  
    armatureDisplay.scaleX = 0.5;  
    armatureDisplay.scaleY = 0.5;  

    dragonbonesFactory.clock.add( armature );  
    armature.animation.gotoAndPlay("Run");  

    egret.Ticker.getInstance().register(function(frameTime:number){
        dragonbonesFactory.clock.advanceTime(0.01)
    },this);
    
    armature.eventDispatcher.addDBEventListener( dragonBones.EventObject.START, this.startPlay,this);
    armature.eventDispatcher.addDBEventListener( dragonBones.EventObject.LOOP_COMPLETE, this.loop_com,this);
    armature.eventDispatcher.addDBEventListener( dragonBones.EventObject.FRAME_EVENT, this.frame_event,this);
}

private startPlay(evt:dragonBones.ArmatureEvent)
    {
        console.log( "armature 开始播放动画!");
    }
private loop_com(evt:dragonBones.ArmatureEvent)
    {
        console.log( "armature 动画播放完一轮完成!");
    }
private frame_event(evt:dragonBones.FrameEvent)
    {
        console.log( "armature 播放到了一个关键帧! 帧标签为:",evt.frameLabel);
    }

private createGameScene(): void {

    var dragonbonesData = RES.getRes( "RobotGame_1_json" );
    var textureData = RES.getRes( "texture_json" );
    var texture = RES.getRes( "texture_png" );

    var dragonbonesFactory:dragonBones.EgretFactory = new dragonBones.EgretFactory();
    //dragonbonesFactory为new dragonBones.EgretFactory() 变量,后面需要调用

    dragonbonesFactory.addDragonBonesData(dragonbonesFactory.parseDragonBonesData(dragonbonesData));
    dragonbonesFactory.addTextureAtlas(dragonbonesFactory.parseTextureAtlasData(texture,textureData));  
    var armature: dragonBones.Armature = dragonbonesFactory.buildArmature("robot"); 

    var armatureDisplay = this.armature.display;
    this.addChild(armatureDisplay);  

    
    armatureDisplay.x = 200;  
    armatureDisplay.y = 300;  
    armatureDisplay.scaleX = 0.5;  
    armatureDisplay.scaleY = 0.5;  

    dragonbonesFactory.clock.add( armature );  
    armature.animation.gotoAndPlay("Run");  

    egret.Ticker.getInstance().register(function(frameTime:number){
        dragonbonesFactory.clock.advanceTime(0.01)
    },this);
    
    armature.eventDispatcher.addDBEventListener( dragonBones.EventObject.START, this.startPlay,this);
    armature.eventDispatcher.addDBEventListener( dragonBones.EventObject.LOOP_COMPLETE, this.loop_com,this);
    armature.eventDispatcher.addDBEventListener( dragonBones.EventObject.FRAME_EVENT, this.frame_event,this);
}

private startPlay(evt:dragonBones.ArmatureEvent)
    {
        console.log( "armature 开始播放动画!");
    }
private loop_com(evt:dragonBones.ArmatureEvent)
    {
        console.log( "armature 动画播放完一轮完成!");
    }
private frame_event(evt:dragonBones.FrameEvent)
    {
        console.log( "armature 播放到了一个关键帧! 帧标签为:",evt.frameLabel);
    }


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值