동시에 작업을 수행하고 게임 논리를 계속 진행하려고하지만 프로세스가 진행 중일 때 작업이 중단됩니다. 스레드를 사용하려고했지만 작동하지 못했습니다. 게임 로직을 처리 할 필요가 없을 때 스프라이트는 예상대로 움직이지만, 동작 중에는 일부 동작을해야 할 때 동작 시간 동안 동작이 중단됩니다. 작업이 종료되면 작업이 진행됩니다. 내가 뭘 잘못하고 있니?진행중인 작업에 의해 cocos2d-iphone 작업이 중단되었습니다.
다음과 같이 선택기를 호출합니다. - 선택기가 동작을 시작합니다.
[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]];
}
작업이 끝나면 다음과 같은 방법으로 스프라이트를 제거합니다.
또한 게임 논리에서 블록의 원인이되는 부분을 표시해야합니다. 게임을 렌더링하는 것을 멈추게하는 것은 매우 강렬해야합니다. –
나는 받아 들여야 할 이유를 몰랐다. 경고 해 주셔서 고맙습니다. – beyax