Egret社区
20银子
各位大神,现在遇到一个问题,请问egret.Tween有动画队列吗?   比如说
            我先执行   egret.Tween.get(this).to({x:100},1000);     这个还没有执行完我又收到一个事件,需要它在执行完上一个动画后或者现在已经没有执行任何动画,那么才执行新的动画egret.Tween.get(this).to({alpha: 0},1000),请问有什么办法能实现?

最佳答案

查看完整内容

在收到事件那里检查动画有没有播完 在播完动画那里检查需不需要继续播下一个
分享到 :
0 人收藏

10 个回复

倒序浏览
yung  初窥堂奥 | 2019-4-9 18:25:31
Shaorll 发表于 2019-4-9 17:47
不行的    因为事件触发的时间不一定的,有可能在第一个动作执行完之后才会触发,   所以在call里面执行 ...

微信图片_20190409182506.jpg
lshl12315  略有小成 | 2019-4-9 15:39:20
在收到事件那里检查动画有没有播完 在播完动画那里检查需不需要继续播下一个
冰湖  官方团队 | 2019-4-9 15:53:15
egret.Tween.get(this).to({x:100},1000) .to({alpha: 0},1000);
这样写的话就是先1秒内移动到(100,1000)这个点,然后一秒内alpha变成0;后边还有动作,就一直 .to就可以



Shaorll  登堂入室 | 2019-4-9 15:57:42
冰湖 发表于 2019-4-9 15:53
egret.Tween.get(this).to({x:100},1000) .to({alpha: 0},1000);
这样写的话就是先1秒内移动到(100,1000 ...

不是的    我中间还有一个条件的,   那是收到了一个事件才会去决定要不要第二段动画的,没有收到事件我只执行第一段,有事件才决定要执行第二段,
yu_chaoyuan  圆转纯熟 | 2019-4-9 16:35:01
Shaorll 发表于 2019-4-9 15:57
不是的    我中间还有一个条件的,   那是收到了一个事件才会去决定要不要第二段动画的,没有收到事件我 ...

那就增加一个执行函数 egret.Tween.get(this).to({alpha: 0},1000).call( ()=>{ 逻辑代码 } )  在逻辑代码里面去判断要不要执行下一个动画
yung  初窥堂奥 | 2019-4-9 16:48:11
Shaorll 发表于 2019-4-9 15:57
不是的    我中间还有一个条件的,   那是收到了一个事件才会去决定要不要第二段动画的,没有收到事件我 ...

        egret.Tween.get(this.img_logo).to({x:0},2000, egret.Ease.backInOut).call(()=>{
                        console.log("x 0 ok.");
                });

做队列,在call里面加状态标记
Shaorll  登堂入室 | 2019-4-9 17:33:15
yu_chaoyuan 发表于 2019-4-9 16:35
那就增加一个执行函数 egret.Tween.get(this).to({alpha: 0},1000).call( ()=>{ 逻辑代码 } )  在逻辑代 ...

额,因为不知道接收到事件的时间,所以收到事件之后有可能上一个缓动动画已经执行完了,所以在call里面加逻辑判断还是有缺陷的
Shaorll  登堂入室 | 2019-4-9 17:39:21
yung 发表于 2019-4-9 16:48
egret.Tween.get(this.img_logo).to({x:0},2000, egret.Ease.backInOut).call(()=>{
                        console.log("x  ...

那我不是要加定时器循环定时判断是不是要执行下一个动画了,因为这样子的对象有很多,这样子会不会有点滥用定时器了?
yung  初窥堂奥 | 2019-4-9 17:43:49
Shaorll 发表于 2019-4-9 17:39
那我不是要加定时器循环定时判断是不是要执行下一个动画了,因为这样子的对象有很多,这样子会不会有点滥 ...

不用定时,定义一个数组,存储你要做的动作队列。每一个动作完毕都会执行call。在call里面检查一下这个数组里面是否还有动作,如果有就去除第一个继续执行,直到数组的len为0.
Shaorll  登堂入室 | 2019-4-9 17:47:40
yung 发表于 2019-4-9 17:43
不用定时,定义一个数组,存储你要做的动作队列。每一个动作完毕都会执行call。在call里面检查一下这个数 ...

不行的    因为事件触发的时间不一定的,有可能在第一个动作执行完之后才会触发,   所以在call里面执行逻辑判断还不够的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部