Cocos2d iphone 如何检查CCAction是否正在运行-cocos2d
我正在使用Cocos2d为iPhone编写游戏。 问题出在这里 我有CCSprite和CCAction在上面运行Cocos2d iphone 如何检查CCAction是否正在运行-cocos2d,cocos2d-iphone,Cocos2d Iphone,我正在使用Cocos2d为iPhone编写游戏。 问题出在这里 我有CCSprite和CCAction在上面运行 CCSprite texture; CCAction anim_action; “动漫行动”是一种永久性的行动。 现在我想检查这个动画是否正在运行 首先,我认为我可以使用[isDone]函数,但我认为它不适用于CCRepatForever操作(我不确定-此观点基于我的测试) 那么如何检查这个动画是否已经在我的“纹理”上运行呢 也许有一种方法可以得到目前正在纹理上运行的动作的名称?
CCSprite texture;
CCAction anim_action;
“动漫行动”是一种永久性的行动。
现在我想检查这个动画是否正在运行
首先,我认为我可以使用[isDone]函数,但我认为它不适用于CCRepatForever操作(我不确定-此观点基于我的测试)
那么如何检查这个动画是否已经在我的“纹理”上运行呢
也许有一种方法可以得到目前正在纹理上运行的动作的名称?
它可能也很有用 我不认为有办法直接判断CCRepeatForever操作是否已完成,因为isDone没有任何意义,但有一些技术可以用来提供回调,以指示某些操作是否仍在运行:
您可以在应用效果时轻松使用[IsOne]
- (void)shakeThatThingOn: (BOOL)on { //you can return BOOL and get if the animation is working or not
if (on == YES){
id shaky2 = [CCShaky3D actionWithRange:3 shakeZ:NO grid:ccg(15,10) duration:5];
if (![shaky2 isDone])
[self runAction:[CCSequence actions:shaky2,[CCStopGrid action],nil]];
}
else {//this else is being called when you turn off animation (it's just 0.2s continuation after turning off - for better visual effect.
[self stopAllActions];
id shaky2 = [CCShaky3D actionWithRange:3 shakeZ:NO grid:ccg(15,10) duration:0.2];
[self runAction:[CCSequence actions:shaky2,[CCStopGrid action],nil]];
}}
并通过简单的布尔控制它,如果它打开或关闭。
我不知道这是否是你的意思,但希望它能有所帮助。如果你知道精灵上会运行多少动作,或者动画是唯一的动作,那么你可以通过检查精灵的运行动作总数来推断动画正在运行
if ([texture numberOfRunningActions] > 0) //animation is running
或
有一种方法可以检查特定动作是否在纹理上运行。使用:
CCAction *action = [texture getActionByTag:kAsignedActionTag];
其中kAsignedActionTag是指定给动画的标记
anim_action.tag = kAsignedActionTag;
如果您的操作仍在运行,getActionByTag方法将不会返回nil
anim_action.tag = kAsignedActionTag;