解決 白鷺引擎 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爲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);
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章