我想运行一个动作并同时继续处理游戏逻辑,但是当过程进行时动作被中断。我尝试使用线程,但无法使其工作。当不需要处理游戏逻辑时,精灵会按照我的预期移动,但是当需要在动作期间进行一些操作时,动作会在操作期间被中断。操作结束后,动作继续进行。我究竟做错了什么?
我按如下方式调用选择器 - 选择器启动操作。
[NSThread detachNewThreadSelector:@selector(moveSprite:)
toTarget:self
withObject:[NSDictionary dictionaryWithObjectsAndKeys:
sprite, @"sprite",
[NSValue valueWithCGPoint:pos], @"pos",
nil]];
-(void) moveSprite: (NSDictionary*) parameters {
CCSprite *sprite = [parameters objectForKey:@"sprite"];
CGPoint pos = [[parameters objectForKey:@"pos"] CGPointValue];
id actionMove = [CCMoveTo actionWithDuration:0.4f position:pos];
id actionMoveDone = [CCCallFuncND actionWithTarget:self selector:@selector(removeSprite:data:) data:(__bridge void*)sprite];
[sprite runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
}
动作结束后,我通过以下方法删除精灵。
-(void) removeSprite: (id)sender data:(void*)data {
CCSprite *sprite = (__bridge CCSprite*)data;
[self removeChild:sprite cleanup:YES];
}