我有一个CCSprite,我正在一个场景中使用,并创建了多个CCAnimation动作,使用单个CCSpriteFrameCache sharedSpriteFrameCache应用于它。虽然一切正常,我可以在动画之间切换,但我觉得我做得很差,并希望通过检索CCSprite上的运行操作来简化我的代码,以便在运行下一个操作之前单独停止它们它
为了帮助创建一些上下文,我们假设以下情况:
我们有一个名为mySprite的CCSprite
我们定义了3个单独的CCAnimation动作,分别用于向右走,向左走,坐着向前看,分别叫做:actionAnimWalkRight,actionAnimWalkLeft和actionAnimSitForward。
我用来实现此目的的方法如下:
虽然这样可行,但似乎是一种糟糕的设计,因为我不知道究竟是什么在运行,所以我知道这些物品不会运行。因此,只需寻找建议和最佳推荐做法,在非常复杂的情况下做这样的事情,因此很难跟踪每一种可能的情况。任何反馈都将不胜感激。
答案 0 :(得分:1)
我建议您简化流程并利用原生Cocos功能,包括stopAllActions
。不要重复使用操作,总是从头开始创建它们,因为Cocos开发人员已经很好地讨论了重用动作可能有问题。
Cocos经过了很好的优化,像stopAllActions
这样的功能并不是性能损失。实际上它可能比你的方法更快。
答案 1 :(得分:1)
创建操作时,使用常量设置该操作的标记:
actionWalkRight.tag= kCurrentAction;
[self runAction:actionWalkRight];
然后,通过该标记检索正在运行的操作并将其停止。
[self stopActionByTag:kCurrentAction];