layabox2:打地鼠(地鼠显示/停留/受击/消失)

新建一个地鼠的逻辑操做类:/src/Mole.jsjavascript

/**
知识点:代码提示:刷新编辑器
*/
var Mole = (function(){
    function Mole(normalState,hitState,downY){
        //正常状态地鼠
        this.normalState = normalState;
        //受击状态地鼠
        this.hitState = hitState;
        //最低点的y坐标 (到编辑界面中查找)
        this.downY = downY;
        //最高点的y坐标 当前状态的y坐标
        this.upY = this.normalState.y;
        //重至
        this.reset();

        //给常态图添加点击事件 第一个是事件 第二个是执行域 第三个执行的方法
        this.normalState.on(Laya.Event.CLICK,this,this.hit)
    };
    var _proto = Mole.prorotype;

    //重值
    _proto.reset = function(){
        //隐藏
        this.normalState.visible = false;
        this.hitState.visible = false;
        //激活状态
        this.isActive = false;
        //显示状态
        this.isShow = false;
        //受击状态
        this.isHit = false;
    }

    //显示
    _proto.show = function(){
        //若是是激活了不作任何事情
        if(this.isActive)return ;
        this.isActive = true;
        this.isShow = true;
        //显示地鼠
        this.normalState.visible = true;
        //让地鼠回到最低坐标
        this.normalState.y = this.downY;
        //让地鼠缓冲出来
        Laya.Tween.to(this.normalState,{y:this.upY},500,Laya.Ease.backOut,Laya.Handler.create(this,this.showComplete));
    }

    //停留
    _proto.showComplete = function(){
        if(this.isShow && !this.isHit){
            //让地鼠停留2秒 第一个参数停留时间,第二个参数执行域,第三个是回调
            Laya.timer.once(2000,this,this.hide)
        }
    }

    //消失
    _proto.hide = function(){
        if(this.isShow && !this.isHit){
            this.isShow = false;
            Laya.Tween.to(this.normalState,{y:this.downY},300,Laya.Ease.backIn,Handler.create(this,this.reset));
        }
    }
    //受击
    _proto.hit = function (){
        if(this.isShow && !this.isHit){
            this.isShow = false;
            this.isHit = true;
            //隐藏常态图 显示受击图
            this.normalState.visible = false;
            this.hitState.visible = true;
            //清楚可能未被到时间的停留定时记 第一个参数是执行域 第二个参数是清楚的定时器方法
            Laya.timer.clear(this,this.hide);
            //让地鼠停留一会后消失
            Laya.timer.once(500,this,this.reset);
        }
    }

    return Mole;
})();
相关文章
相关标签/搜索