我正在尝试制作我的第一个cocos2d,chipmunk ipad app
我在我的.h文件中设置了一个“球”精灵,如下所示:
// HelloWorld Layer
@interface
HelloWorld : CCLayer {
cpSpace *space;
CCSprite *ball;
}
我正在这样移动它(一触即发):
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
for( UITouch *touch in touches ) {
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL: location];
// Determine speed of the target
int minDuration = 2.0;
int maxDuration = 4.0;
int rangeDuration = maxDuration - minDuration;
int actualDuration = (arc4random() % rangeDuration) + minDuration;
// Create the actions
id actionMove = [CCMoveTo actionWithDuration:actualDuration
position:ccp(location.x, location.y)];
id actionMoveDone = [CCCallFuncN actionWithTarget:self
selector:@selector(spriteMoveFinished:)];
[ball runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
[ball retain];
}
}
当我使用调试器运行时,我得到了这个:
2011-06-29 20:44:04.121 ballgame[3499:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HelloWorld spriteMoveFinished:]: unrecognized selector sent to instance 0x605a3e0'
它似乎适用于几个触摸,然后它似乎崩溃,所以也许它的内存泄漏?任何建议或建议都会有所帮助,这就像我的第一个应用程序。
干杯!
答案 0 :(得分:4)
您正在调用spriteMoveFinished:
对象上不存在的方法(HelloWorld
)。你有spriteMoveFinished:
方法吗?
'无法识别的选择器已发送'=调用不存在的方法。
答案 1 :(得分:2)
您是否尝试过调试应用?根据你的崩溃日志尝试NSZombie你的一个对象被释放,你在其上调用了一个函数。在您的环境标志中尝试NSZombieEnable。
答案 2 :(得分:2)
您定义了spriteMoveFinished:
方法吗?如果没有,请定义它。如果它已经存在,那么你的HelloWorld对象可能还没有保留在任何地方。