我正在尝试为我的播放器设置行走方向的动画(如在鸟瞰RPG中),所以我拥有它if (joystick.velocity. y > 0){ [player runAction: walkUpAction] }
当然这会导致Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'runAction: Action already running
问题得到解决。我没有得到的是一种解决这个问题的方法。我尝试添加一些变量(isRunning,如果正在运行,那么不要调用类型的东西),但似乎没有任何工作。我在cocos2d论坛上问过这个问题,但没有运气。有任何想法吗?Cocos2d CCAction已经运行应用程序终止
0
A
回答
1
尝试这种情况:
首先在.H其中您检测的方向变化声明一些IVARS
BOOL _isWalkingUp;
BOOL _isWalkingDown;
BOOL _isWalkingLeft;
BOOL _isWalkingRight;
然后,在每个代码段:
if(!_isWalkingUp && (joystick.velocity.y >0)) {
[player stopAllActions];
[player runAction:walkUpAction];
_isWalkingUp=YES;
_isWalkingDown=NO;
_isWalkingLeft=NO;
_isWalkingRight=NO;
}
等。 ..你可能会想添加一些'状态'来避免一个不稳定的运动控制。但这会是一个开始。
1
在cocos2d中,您必须在运行前重新创建动作,即不能多次运行同一动作。因此,如果您不想仅停止此操作,则不需要将操作保存在变量中,而不需要其他操作。这是关于你的错误。如果你告诉更多的细节,你想用你的方法做什么,我可以尝试给你一些关于如何做你想要的建议。
实际上,我不知道这个操纵杆是如何工作的,但是如果它没有存储以前的状态,你可以手动存储它,并在以前的速度为0并且当前速度大于0的情况下运行你的动作。无论如何,您必须在重新运行之前重新创建操作。所以,你会有这样的事情
- (void) update:(ccTime)dt
{
BOOL needRunWalkUpAnimation = (prevVelocity == 0) && (curVelocity > 0);
if(needRunWalkUpAnimation)
{
id walkUpAction = \\create your action here
[player runAction: walkUpAction];
}
prevVelocity = curVelocity;
}
相关问题
- 1. Cocos2d CCAction在几次运行后停止
- 2. 终止运行Python应用程序
- 3. 如果已经运行,阻止应用程序启动
- 4. CCAction:停止并运行
- 5. C#应用程序打在已经运行的应用程序
- 6. 当应用程序终止时,每运行10分钟运行代码终止
- 7. 运行应用程序后已停止应用程序
- 8. Pause CCAction cocos2d
- 9. 如果进程已经运行,终止bash脚本
- 10. 运行已经在OS X上运行的应用程序
- 11. 线程已经停止运行
- 12. Cocos2D:在CCSprite上停止/恢复CCAction
- 13. 的Cocos2D无视CCAction
- 14. “异常代码:C0000005 ACCESS_VIOLATION”进行中应用程序,应用程序已终止
- 15. 应用程序进程永不终止每次运行
- 16. 如何恢复到正确的应用程序终止(cocos2d的)
- 17. 此应用程序已经请求运行时以不寻常的方式终止它QT C++
- 18. 应用程序执行终止
- 19. Java kill程序如果已经运行
- 20. 收到此错误:不幸的是,应用程序已经停止,运行我的应用程序
- 21. 我已经安装phoneGap lib,但无法运行应用程序
- 22. 恢复已经运行的应用程序共享时
- 23. White如何在已经运行的应用程序上工作?
- 24. WaitForExit不工作时,应用程序已经运行
- 25. Windows.Forms:激活已经在正确运行的应用程序FormWindowState
- 26. 与已经运行的Java应用程序的CLI通信?
- 27. 检查应用程序是否已经运行
- 28. 在已经运行的应用程序中打开文件
- 29. 如果应用程序已经运行,它会启动吗?
- 30. 应用程序不终止
发誓我可以试试,谢谢。 – stenger96 2012-07-09 11:23:12
刚刚发现这不起作用,因为它在动作完成之前停止了动作。这个动作是一个永远重复的动画,所以这个解决方案将不起作用。 – stenger96 2012-07-09 20:40:38
所以如果它永远运行,再次运行它的意义何在? – YvesLeBorg 2012-07-09 20:53:46