2012-05-12 5 views
1

루프에 몇 초의 지연 (예 : A 루프)을 추가하는 방법이 있습니까? 즉, 각 반복 후에 짧은 지연을 원합니다.루프 내에서 지연 추가

나는 cocos2d를 사용하여 지연을 사용하여 선택기를 예약 할 수 있음을 알고 있습니다. 그러나 나는 이것이이 경우에 어떻게 사용될 수 있을지 확신하지 못한다.

또한 수면은 비용이 많이 들고 권장하지도 않습니다.

제안 사항?

+0

기본 (UI) 스레드에서 지연되지 않았 으면 좋겠다. 그렇지 않으면 사용자가이를 인식하고 만족하지 않을 것입니다. –

+0

확실치 않지만, 아마도'sleep()'이 여기에서 유용 할 수 있습니다. – SmartTree

답변

0

당신은 C의 절전 기능을 사용할 수 있습니다

sleep(seconds); 

을하지만 당신은 아마도 UITimer, 또는 블록 기반 performSelector:withObject:afterDelay: 방법을 볼 수 있었다.

더 NSObject의 기반 방식이를 참조하십시오 : 당신적인 Cocos2D에서 NSTimers을 사용해서는 안 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/performSelector:withObject:afterDelay

+0

모든 수면을 함께 중단시키기 때문에 수면을 사용하는 것이 올바른 방법인지 확신 할 수 없습니다. 나는 아직도 앱이 단지 다른 일을하기를 원한다. – plawres

+0

아마 나는 지연과 함께 재귀 적으로 메서드를 호출 할 수 있습니다. – plawres

+0

일시 중지하는 현재 방법을 얻는 방법은 없지만 일시 중지하는 동안 다른 예약 된 작업을 계속 처리합니까? – plawres

2

. 게임을 일시 중지 할 가능성이있는 경우 문제가 발생합니다.

반복 사이에 고정 지연을 사용하여 일부 동작을 반복하려면 scribe : interval : 메서드를 필요한 지연과 함께 자유롭게 사용할 수 있습니다.

[self schedule:@selector(methodToScedule) interval:yourDelay] 

임의 지연을 수행해야하는 경우 cocos2d 동작을 사용할 수 있습니다. 예를 들어

- (void) sceduleMethod 
{ 
    // do anything you want 

    ccTime randomDuration = // make your random duration 
    id delayAction = [CCDelayTime actionWithDuration: randomDuration]; 
    id callbackAction = [CCCallFunc actionWithTarget:self selector:@selector(scheduleMethod)]; 
    id sequence = [CCSequenece actionOne: delayAction actionTwo: callbackAction]; 
    [self runAction: sequence]; 
} 

이 경우에는 한 번만 호출해야합니다. 그러면 주어진 지연으로 스스로를 호출합니다.

+0

도움 주셔서 감사합니다. – plawres