[已解决]发现Action事件相关bug一枚……

发现bug一枚……
sp->runAction(Repeat::create(Blink::create(1, 10), 5));//1秒钟闪动10次、重复5次
这个Repeat套Blink动作,会在执行结束后终止运行,看编译器提示大概意思是Blink内部的innerAction被stop了两次,第二次里的_target已经是NULL了。导致运行时空指针报错。。。
我在群里让大家测试,3.4有问题、3.7.1没问题、3.9有问题。目前就试了这几个版本。。。

如果真的有问题的话,那看来真的是老bug了……

哦,忘了说了,我本身是3.6版本的,也有问题……

感谢反馈,正在测试。

会在执行结束后终止运行

这句话是什么意思?

就是比如我这个重复5次,每次1秒内闪10次,5秒整个动作结束后,会终止运行,NULL空指针异常停止么。
无法上传图片,所以我描述一下吧:
cocos2d-x 3.6版
停在了这一句:CCActionManager.cpp 第401行: _currentTarget->currentAction->stop();
NULL异常的直接原因:_currentTarget->currentAction就是Repeat本身,其内部_innerAction为Blink对象,然后其Blink的_target为NULL。

经分析,是由于Repeat本身stop时,已经让Blink已经stop过了,但不知什么原因,在ActionManager中,又让Repeat执行stop,从而Blin的stop被执行了两次……

就是比如我这个重复5次,每次1秒内闪10次,5秒整个动作结束后,会终止运行,NULL空指针异常停止么。
无法上传图片,所以我描述一下吧:
cocos2d-x 3.6版
停在了这一句:CCActionManager.cpp 第401行: _currentTarget->currentAction->stop();
NULL异常的直接原因:_currentTarget->currentAction就是Repeat本身,其内部_innerAction为Blink对象,然后其Blink的_target为NULL。

经分析,是由于Repeat本身stop时,已经让Blink已经stop过了,但不知什么原因,在ActionManager中,又让Repeat执行stop,从而Blin的stop被执行了两次……

auto bink = Blink::create(1, 10);
auto se = Sequence::create(bink, NULL);
auto repdd = Repeat::create((ActionInterval*)se, 5);

楼主,你不能直接这样写。。要用seq包含了。。在把seq放进去才行