我记得之前3.16还是3.15的时候,ActionInstant有重复执行的问题,然后引入了isDone,这个3.17.1版本引入了MATH_EPSILON 最小duration判断,现在ActionInterval也存在重复执行的问题,用两个ActionInstant创建Spawn,Spawn会有重复进入,我感觉这个Bug可能一直存在,但是以前最小值的时候并没有暴露。ActionInterval的isDone判断是在step方法里面,只有最外面由ActionManager管理的才会判断,里面的没有改变,能快点修复吗
方便提供 复现代码 吗?
当前的测试用例有几个是和执行次数相关的,暂时并没有表现出这个问题。 这个问题重复出现的话,可以加一个测试例。
1赞
这是我们项目里面的代码,复杂度比较高,直接贴出来应该没啥用,我可以之后抽空写一个类似的代码,基本上就是Sequence里面套着Spawn,Spawn里面是一个ActionInstant和一个ExtraAction。这段代码在iPhone7,iPhone8运行都没有问题,在iPhoneXR上会报多次执行。是因为XR性能更强?还是因为浮点数的计算导致split划分的时候出问题了?
if( found == _last && _actions[found]->isDone() )
{
return;
}
PS:这段是Sequence::update里面的一个判断,这个在Sequence里面是ActionInterval的时候是无效的,我感觉引入的isDone逻辑不统一,ActionInterval中没有使用,也是值得优化的一点,我最近比较忙,复现代码可能得晚一点了,如果你们能提早发现优化就好啦,目前我已经回滚ActionInterval的代码到3.17了。一切正常,先用着