官方文档中的关键视频的调用方法和事件的监听方法,在实际项目中表示已经被废弃了。 因为在网上也没有找到一个讨论和解决这个问题的帖子,所以我自己摸索了一下。 以下投稿解决方法。
这是在网上找到的常见写法:
专用creategamescene () : void {
vardragonbonesdata=RES.get RES (robot game _1_ JSON );
vartexturedata=RES.get RES (texture _ JSON );
var texture=RES.get RES (texture _ png );
vardragonbonesfactory : dragon bones.egret factory=newdragonbones.egret factory ()
dragonbonesfactory.adddragonbonesdata (dragon bones.data parser.parsedragonbonesdata ) dragonbonesdata;
dragonbonesfactory.addtextureatlas (newdragonbones.egrettextureatlas ) texture,textureData );
var armature : dragon bones.armature=dragonbonesfactory.build armature (' robot );
vararmaturedisplay=this.armature.get display (;
this.addchild(Armaturedisplay;
armatureDisplay.x=200;
armatureDisplay.y=300;
armatureDisplay.scaleX=0.5;
armatureDisplay.scaleY=0.5;
dragon bones.world clock.clock.add (armature );
armature.animation.goto and play (' run );
egret.Ticker.getInstance ().register(function ) frametime:number ) {
dragon bones.world clock.clock.advance time (0.01 ) )。
(,this );
armature.addevent listener (dragon bones.animation event.start,this.startPlay,this );
armature.addevent listener (dragon bones.animation event.loop _ complete,this.loop_com,this );
armature.addevent listener (dragon bones.frame event.animation _ frame _ event,this.frame_event,this );
}
privatestartplay (evt : dragon bones.armature event ) )。
{
console.log(Armature开始动画! ' );
}
私有loop _ com (evt : dragon bones.armature event ) )。
{
console.log(Armature视频的播放结束了! ' );
}
私有帧_ event (evt : dragon bones.frame event ) )。
{
console.log(Armature播放了关键帧! 帧标签为',evt.frameLabel;
}
privatecreategamescene (: void ) vardragonbonesdata=RES.get RES (robot game _1_ JSON ); vartexturedata=RES.get RES (texture _ JSON ); var texture=RES.get RES (texture _ png ); vardragonbonesfactory : dragon bones.egret factory=newdragonbonesfactory (dragonbonesfactory.addragonbonesdata
nesData(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);
}