Egret社区
1银子
各位大佬,教教小白吧!不知道白鹭里面的累加效果怎么实现,不用Timer能实现吗?下面是我写的,但是setTimeout()报错了,不知道啥原因!!


[mw_shl_code=javascript,true]
private _scoreEffect(MinScoreNum:number,MaxScoreNum:number,speed:number)
        {
                //delta为一个常数,每次加的数大小
                let delta = (MaxScoreNum - MinScoreNum) / speed;
                let result = 0;                        
                result = MinScoreNum;         
                for(let i = 0;i < speed; i++)      
                {            
                        result += delta;
                        this.m_labScore.text = result.toString();  
                        setTimeout('_scoreEffect()',10); //该句需要延时处理,实现数字累加到一个指定数目的效果
                }        
                this.m_labScore.text = MaxScoreNum.toString();   
        }
[/mw_shl_code]

最佳答案

查看完整内容

这是TS语言,类似java的,要穿this._scoreEffect()
分享到 :
1 人收藏

7 个回复

倒序浏览
噜啦啦啦  圆转纯熟 | 2019-5-1 10:55:32
[mw_shl_code=javascript,true]
private _scoreEffect(MinScoreNum:number,MaxScoreNum:number,speed:number)
        {
                let delta:number = Math.floor((MaxScoreNum - MinScoreNum) / (speed / 2));//间隔数字,累加的间隔数,可以根据需求修改
                let result:number = 0;                        
                result = MinScoreNum;
                let thisTemp = this;
                let thisTime;       
                Common.log(MaxScoreNum);
                thisTime = setInterval(function () {
                        Common.log("循环中");       
                        if(result < MaxScoreNum){
                                result += delta;                                
                                thisTemp.m_labScore.text = result.toString();
                        }       
                        else{       
                         Common.log("停止循环");                 
                         clearInterval(Number(thisTime))
                         thisTemp.m_labScore.text = MaxScoreNum.toString();
                         }                        
          },speed);                 
        }
[/mw_shl_code]

在此把我想要的数字累加效果贴出来,希望对需要这个效果的人有帮助~~~


a18050123231  圆转纯熟 | 2019-4-30 15:57:40
噜啦啦啦 发表于 2019-4-30 16:42
我是应该把那个setTimeout里面第一个参数改成方法名吗?

这是TS语言,类似java的,要穿this._scoreEffect()
噜啦啦啦  圆转纯熟 | 2019-4-30 16:07:56
这个代码是我修改的携程,可是不知道egret里面怎么延时有效果,我百度的是setTimeout方法,但是实际运行出现的bug是246的一个奇怪的文件里面显示我setTimeout里面穿得方法。不清楚该怎么修改了!
liu1515123582  登堂入室 | 2019-4-30 16:30:14
你这个是需要传函数额。你传个字符串做什么哦
噜啦啦啦  圆转纯熟 | 2019-4-30 16:42:18
liu1515123582 发表于 2019-4-30 16:30
你这个是需要传函数额。你传个字符串做什么哦

我是应该把那个setTimeout里面第一个参数改成方法名吗?
xhfzcmt  初学乍练 | 2019-4-30 18:01:09
var obj = {v:100};
egert.Tween.get(obj, {onChange:function(){
  xxx.text = obj.v+'';
}}).to({v:200}, 2000)
噜啦啦啦  圆转纯熟 | 2019-5-1 10:06:31
a18050123231 发表于 2019-4-30 16:58
这是TS语言,类似java的,要穿this._scoreEffect()

我这个样子试过了,我这个没有实现累加的效果……现在在试setInterval这个方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部