2014-10-28 7 views
1

내 코드입니다 :종속성하지 완료 될 때까지 대기 (적인 Cocos2D/목표 - C) 여기

NSOperationQueue * que = [[NSOperationQueue alloc] init]; 

NSBlockOperation * number1 = [NSBlockOperation blockOperationWithBlock:^{ 
    CCActionRotateTo * rotLeft = [CCActionRotateBy actionWithDuration:4.2 angle:-70]; 

    [_claw runAction:rotLeft]; 
}]; 
NSBlockOperation * number2 = [NSBlockOperation blockOperationWithBlock:^{ 
    CCActionRotateTo * rotRight = [CCActionRotateBy actionWithDuration:4.2 angle:120]; 


    [_claw runAction:rotRight]; 
}]; 
[number2 addDependency:number1]; 
[que addOperations:@[number1,number2] waitUntilFinished:YES]; 

그러나 첫 번째가 될 때까지 나는 2 번이 번호 1 전에 실행하고 대기 않는 이유를 알아낼 수 없습니다 완료, 어떤 도움을 주시면 감사하겠습니다 =)

+2

errrr ... [_claw runAction : [CCActionSequence actions : rotLeft, rotRight, nil]]; 또는 나는 여기에 근본적으로 뭔가를 놓치고 있는가? – YvesLeBorg

+0

Thx YvesLeBorg, 고칠 수 있습니다. 그 방법에 대해서 생각조차하지 않았다. 나는 아직도 cocos2d에 대해 다소 새로운 것 같다. – sp3kk

+0

API 문서를 들여다. ... 코코스 3.x에 좋은 점이 많다. – YvesLeBorg

답변

0

UI에 영향을 미치는 작업을 수행하고 있으므로 [NSOperationQueue mainQueue]을 사용해야한다고 생각합니다. 기본적으로

NSOperationQueue * que = [NSOperationQueue mainQueue]; 

당신은 NSOperationQueue 그것은 실행되지 않습니다/지연 될하기 위해 UI 업데이트를 일으킬 수있는 백그라운드 스레드를 사용합니다 init 때.

+0

친구가 무슨 말을하려고하는지 잘 모르겠습니다. [NSOperationQueue mainQueue]는 어떻게 구현합니까? – sp3kk

+0

코코의 오브젝트에 영향을 줄 수있는 +1은 메인 스레드에서 실행되어야합니다 (OpenGL이 당신을 물들입니다). 코코스는 이것을 안전하게하는 장난감을 가지고 있습니다. (질문에 대한 저의 의견을보십시오). – YvesLeBorg