Egret社区

请教一个timer的问题

2014-7-28 10:15
17893
//GameApp.ts
private goodTimer:egret.Timer = new egret.Timer(2000);
private createGameScene():void {

        var sky:egret.Bitmap = this.createBitmapByName("bgImage");
        this.addChild(sky);
        var stageW:number = this.stage.stageWidth;
        var stageH:number = this.stage.stageHeight;
        sky.width = stageW;
        sky.height = stageH;




        //居中容器
        var centerR:egret.Sprite = new egret.Sprite();
        centerR.graphics.drawRect(0, 0, 480, 800);
        centerR.graphics.endFill();
        centerR.x = 15;
        centerR.y = 100;
        this.addChild(centerR);

        for (var i:number = 0; i < 4; i++) {
            var Tamx = new Tam.TamHole(RES.getRes("hole"), RES.getRes("good"));
            var T = i * 100 + i * 15;
            Tamx.x = T;
            this.Hole.push(Tamx);
            centerR.addChild(Tamx);
        }
        this.goodTimer.addEventListener(egret.TimerEvent.TIMER, this.testFun, this);
        this.goodTimer.start();

    }
    private testFun(evt:egret.TimerEvent){
        var randomNum:number = Math.round(Math.random()*this.Hole.length);
        if(randomNum == this.Hole.length){
            randomNum = randomNum - 1;        }
        this.Hole[randomNum].playGood();
    }

//Tam.ts

module Tam{

    export class TamHole extends egret.DisplayObjectContainer
    {
        /**洞洞*/

        private spr1;
        private good;
        private hole;
        public constructor(texture:egret.Texture,textureGood:egret.Texture) {
            super();

            this.spr1 = new egret.Sprite();
            this.spr1.graphics.beginFill(0x00ff00, 1);
            this.spr1.graphics.drawRect(0, 0, 100, 80);
            this.spr1.graphics.endFill();

            this.addChild(this.spr1 );
            var rect:egret.Rectangle = new egret.Rectangle(0,0,100,114);
            this.spr1.mask = rect;

            //地鼠
            this.good = new egret.Bitmap(textureGood);
            this.good.touchEnabled = true;

            this.spr1.addChild(this.good);
            this.good.y = 114;
            this.good.x = 10;
            this.good.addEventListener(egret.TouchEvent.TOUCH_TAP, this.aFun, this);


            this.hole = new egret.Bitmap(texture);
            this.hole.touchEnabled = true;
            this.spr1.addChild( this.hole);
            this.hole.y =  75;
        }

        public playGood(){
            egret.Tween.get(this.good).to({ y: this.good.y -114 }, 1000).to({ y: this.good.y }, 500);
        }

        public aFun(evt:egret.TouchEvent ){
            //出现另外一个头像
            this.good.texture = RES.getRes("bad");
            //点击复位
            egret.Tween.get(this.good).to({ y: this.good.y }, 500);
        }

    }
}

分享到 :
0 人收藏

3 个回复

倒序浏览
webzhangyi  初学乍练 | 2014-7-28 10:16:14
1、我在进行点击的时候图像是停止的,我如何控制time也停止
2、我点击后复位的时候不成功,egret.Tween.get(this.good).to({ y: this.good.y }, 500);,不点击都是正常的
dom  圆转纯熟 | 2014-7-28 10:34:48
webzhangyi 发表于 2014-7-28 10:16
1、我在进行点击的时候图像是停止的,我如何控制time也停止
2、我点击后复位的时候不成功,egret.Tween.get ...
  1. public aFun(evt:egret.TouchEvent ){
  2.             //出现另外一个头像
  3.             this.good.texture = RES.getRes("bad");
  4.             //点击复位
  5.             egret.Tween.get(this.good).to({ y: this.good.y }, 500);
  6.         }
复制代码

你这段代码有问题,this.good.y在你点的时候可能是正在播放动画。y的值是一直变的。你用一个一直在变的值来复位当然不对了。自己写个成员变量。缓存下正确的复位的值。把this.good.y替换为那个固定的值
webzhangyi  初学乍练 | 2014-7-28 10:38:22
谢谢。刚刚我正好想到。搞定了

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部