Egret社区
// 以前只是索取从来没分享过东西,这里分享一下自己写的,功能特别简单,1.通过随机出来的数字来执行特定的动作;2.加上定时器可以保证永动;

class Dragon222 extends eui.Component{
    private actionArray; //骨骼角色拥有的动作列表
    private actionFlag;  //骨骼角色执行的当前动作索引
    private container;   //存放骨骼动画的容器
    private armatureDisplay; //骨骼的可视对象
    private timer:egret.Timer; //定时器相关

    public constructor()
    {
        super();
        this.addEventListener(eui.UIEvent.COMPLETE,this.dragon,this);

        this.skinName="resource/eui_skins/Dragon222.exml";

        this.timer=new egret.Timer(2000,2);//这里很重要,后面必须要设定次数,不然定时器就一直进行下去,不会停下来
        this.timer.addEventListener(egret.TimerEvent.TIMER,this.ontimeupdate,this);
        this.timer.addEventListener(egret.TimerEvent.TIMER_COMPLETE,this.onTimerComplete,this); //每当它完成timerrepeate完成的次数后调用
        this.timer.start();
    }

    public dragon():void
    {
    this.actionArray=["stand","run","attack"];
    this.container=new egret.DisplayObjectContainer();
    this.addChild(this.container);
    this.container.x=200;
    this.container.y=300;

    var skeletonData = RES.getRes( "red_ske_json" );  
    var textureData = RES.getRes( "red_tex_json" );  
    var texture = RES.getRes( "red_tex_png" );      //读取一个骨骼数据,并创建实例显示武台

    var egretFactory: dragonBones.EgretFactory = dragonBones.EgretFactory.factory;
    egretFactory.parseDragonBonesData(skeletonData);  
    egretFactory.parseTextureAtlasData(textureData, texture);

    this.armatureDisplay=egretFactory.buildArmatureDisplay("Armature");
    this.addChild(this.armatureDisplay)
    this.armatureDisplay.x = 300;
    this.armatureDisplay.y = 700;
    this.armatureDisplay.scaleX = 3;
    this.armatureDisplay.scaleY = 3;

    this.armatureDisplay.animation.play(this.actionArray[0]); //先播放一个默认的
}

    private ontimeupdate():void{
        console.log("计时开始");
        var suiji=Math.round(Math.random()); //这里得出来的是一个整数,只有0或者1
        if(suiji==0)
        {
            this.armatureDisplay.animation.play(this.actionArray[0]);
        }
        if(suiji==1)
        {
            this.armatureDisplay.animation.play(this.actionArray[1]);
        }

    }

    private onTimerComplete():void{            
        var suiji2=Math.round(Math.random());
        if(suiji2==0)
        {
            this.armatureDisplay.animation.play(this.actionArray[1]);
        }
        if(suiji2==1)
        {
            this.armatureDisplay.animation.play(this.actionArray[2]);
        }                           

        this.timer.reset() //重新计时
        this.timer.start() //开始计时,这样就又调用了(2000,2),2000毫秒,执行2次
    }

}

分享到 :
1 人收藏

3 个回复

倒序浏览
xljdawow  登堂入室 | 2018-6-12 11:08:55
写的挺不错的,我先给自己点个赞
yanleiyu  圆转纯熟 | 2018-6-12 11:13:24
我也给你点个赞。
xljdawow  登堂入室 | 2018-6-12 16:31:04
多写了一些内容,container这四行没用上,本来照着官方教程写的,写着写着就自己写偏了,功能实现了就好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部