当前位置:   article > 正文

解决 白鹭引擎 egret 龙骨动画 Deprecated 已废弃_egret mc动画转换

egret mc动画转换

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


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

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);
    }
    

  1. private createGameScene(): void {
  2.     var dragonbonesData = RES.getRes( "RobotGame_1_json" );
  3.     var textureData = RES.getRes( "texture_json" );
  4.     var texture = RES.getRes( "texture_png" );
  5.     var dragonbonesFactory:dragonBones.EgretFactory = new dragonBones.EgretFactory();
  6.     dragonbonesFactory.addDragonBonesData(dragonBones.DataParser.parseDragonBonesData(dragonbonesData));
  7.     dragonbonesFactory.addTextureAtlas(new dragonBones.EgretTextureAtlas(texture,textureData));  
  8.     var armature: dragonBones.Armature = dragonbonesFactory.buildArmature("robot"); 
  9.     var armatureDisplay = this.armature.getDisplay();
  10.     this.addChild(armatureDisplay);  
  11.     
  12.     armatureDisplay.x = 200;  
  13.     armatureDisplay.y = 300;  
  14.     armatureDisplay.scaleX = 0.5;  
  15.     armatureDisplay.scaleY = 0.5;  
  16.     dragonBones.WorldClock.clock.add( armature );  
  17.     armature.animation.gotoAndPlay("Run");  
  18.     egret.Ticker.getInstance().register(function(frameTime:number){
  19.         dragonBones.WorldClock.clock.advanceTime(0.01)
  20.     },this);
  21.     
  22.     armature.addEventListener( dragonBones.AnimationEvent.START, this.startPlay,this);
  23.     armature.addEventListener( dragonBones.AnimationEvent.LOOP_COMPLETE, this.loop_com,this);
  24.     armature.addEventListener( dragonBones.FrameEvent.ANIMATION_FRAME_EVENT, this.frame_event,this);
  25. }
  26. private startPlay(evt:dragonBones.ArmatureEvent)
  27.     {
  28.         console.log( "armature 开始播放动画!");
  29.     }
  30. private loop_com(evt:dragonBones.ArmatureEvent)
  31.     {
  32.         console.log( "armature 动画播放完一轮完成!");
  33.     }
  34. private frame_event(evt:dragonBones.FrameEvent)
  35.     {
  36.         console.log( "armature 播放到了一个关键帧! 帧标签为:",evt.frameLabel);
  37.     }


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

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. private createGameScene(): void {
  2.     var dragonbonesData = RES.getRes( "RobotGame_1_json" );
  3.     var textureData = RES.getRes( "texture_json" );
  4.     var texture = RES.getRes( "texture_png" );
  5.     var dragonbonesFactory:dragonBones.EgretFactory = new dragonBones.EgretFactory();
  6.     //dragonbonesFactory为new dragonBones.EgretFactory() 变量,后面需要调用
  7.     dragonbonesFactory.addDragonBonesData(dragonbonesFactory.parseDragonBonesData(dragonbonesData));
  8.     dragonbonesFactory.addTextureAtlas(dragonbonesFactory.parseTextureAtlasData(texture,textureData));  
  9.     var armature: dragonBones.Armature = dragonbonesFactory.buildArmature("robot"); 
  10.     var armatureDisplay = this.armature.display;
  11.     this.addChild(armatureDisplay);  
  12.     
  13.     armatureDisplay.x = 200;  
  14.     armatureDisplay.y = 300;  
  15.     armatureDisplay.scaleX = 0.5;  
  16.     armatureDisplay.scaleY = 0.5;  
  17.     dragonbonesFactory.clock.add( armature );  
  18.     armature.animation.gotoAndPlay("Run");  
  19.     egret.Ticker.getInstance().register(function(frameTime:number){
  20.         dragonbonesFactory.clock.advanceTime(0.01)
  21.     },this);
  22.     
  23.     armature.eventDispatcher.addDBEventListener( dragonBones.EventObject.START, this.startPlay,this);
  24.     armature.eventDispatcher.addDBEventListener( dragonBones.EventObject.LOOP_COMPLETE, this.loop_com,this);
  25.     armature.eventDispatcher.addDBEventListener( dragonBones.EventObject.FRAME_EVENT, this.frame_event,this);
  26. }
  27. private startPlay(evt:dragonBones.ArmatureEvent)
  28.     {
  29.         console.log( "armature 开始播放动画!");
  30.     }
  31. private loop_com(evt:dragonBones.ArmatureEvent)
  32.     {
  33.         console.log( "armature 动画播放完一轮完成!");
  34.     }
  35. private frame_event(evt:dragonBones.FrameEvent)
  36.     {
  37.         console.log( "armature 播放到了一个关键帧! 帧标签为:",evt.frameLabel);
  38.     }


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/54445
推荐阅读
相关标签
  

闽ICP备14008679号