异步或者断线的时候如何有效的清除动画,定时器

// 比如:

ServiceToClient1() {

    // A 区域逻辑

    ...

    this.scheduleOnce(()=>{

        // B区域执行代码

        cc.tween(node)...

    }, 20);

}

// 断线重连
reconnect() {

    this.unscheduleAllCallbacks();

    cc.Tween.stopAll();

}

快速切后台走断线重连的时候,代码正在执行ServiceToClient1中的A区域代码,这导致 清除动画没有成功 应为 B区域是后面执行的,这种情况我一般是搞个变量判断,但是如果有多个这样的方法的话,后期维护很困难,这个有什么好的解决方法么

这种情况就是两个异步的方法同时执行的时候怎么把另一个异步方法给结束,这个有没有啥好的解决方案?

通用做法清除场景前把所有的tween,定时器全关闭

我这个是切后台,和跳场景不太一样

清理舞台,重连或,服务器发当前状态所有数据内容,重刷舞台

单纯切后台可以不用管吧?主要你这里处理了个重连,一般重来最简单粗暴的做法就是重进场景,丢弃掉以前所有的表现数据,从服务器获取需要的新数据然后重新刷新制作

做的棋牌,ui数据比较多,切后台重刷场景的会闪屏,表现不行

以前也是做qp的,切后台从没管过,只有重连才需要刷场景

切后台就是要走重连啊,熄屏一个小时或者切后台一个小时,数据就不对了,要重连拉服务器数据

我们这边测试每隔一秒切一次后台测试

做心跳包,或者做个消息队列。计时或者计数超过一定标准了才重连,否则正常运行,只是那一时刻动画可能比较乱,但是qp本身动画展现并不会太多

是这样,但是重连我们这边是直接清除动画不播了,然后就碰到这个问题了,我用变量解决了,但是不够优雅,想找个牛逼的解决方案

重连不播了就不播了啊,qp重点并不在动画上,本身就是自己错过了,短时间的那种不算,都达到重连的标准了就已经是长时间错过了,你觉得玩家更在意牌局情况还是你的动画表现?

所以我的问题是断线回来清除不了,当我清除动画的时候ServiceToClient1 还在执行A区域代码。等我清完才开始走B区域代码

场景都重刷了还清除不了你的动画?

除了刷场景还有别的方案么

那这就只能说,自己建个动画管理类,所有动画都走这一个类,然后自己手动判断哪些动画正在运行,手动做处理
个人不推荐这种方法,容易出锅

只有这样了,后面再看看,手动封装改改。或者尝试一下刷场景

刷场景可以考虑跳个加载或者啥的卡一下,这样看起来不会像你说的闪屏这么难受

棋牌严打。。你还搞。。优秀。。