참고 : http://injakaun.tistory.com/102



1. Schedule 종류

스케쥴는  6개의 종류가 있습니다.


schedule(SEL_SCHEDULE selector);

가장 일반적인 방법으로 타이머에서 호출할 메소드만 지정하는 방법입니다타이머가 호출되는 시간은 처음 cocos2d-x 실행할  지정한 fps 속도를 빠릅니다일반적으로 1초의 60번의 fps 지정하고 있습니다. ftp 지정는 AppDelegate.cpp 파일에 있습니다.


schedule(SEL_SCHEDULE selector, float interval)

 방법은 호출할 메소드와 간격을 지정하는 방법입니다이때에는 fps 지정된 시간이 아닌 interval 지정된 시간마다 메소드가 호출됩니다인터벌의 시간은 fps시간보다 빠를수 없습니다지금 메인 fps 1초에 10 그리는 건데스케쥴의 인터벌을 0.05초인 일초에 20 호출되게 지정을 해도 결국 fps 속도 만큼은 1초에 10번만 호출되게 됩니다스케쥴의 인터벌 간격은 fps 간격을 기본으로해서 설정됩니다.


schedule(schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)

 방법은 메소드인터벌 뿐만 아니라타이머가 불리는 횟수와 처음 타이머가 호출되는 시간을 지정할  있습니다.

그래서 스케쥴을 실행하면, delay 정한 시간만큼 기다리고 있다가 실행되고그리고 인터벌 간격마다 리피트 횟수 만틈 호출됩니다그래서 결국 호출되는 횟수는 리피트로 지정한 횟수보다 한번  호출됩니다.


scheduleOnce(SEL_SCHEDULE selector, float delay)

 방법은 딜레이로 지정한 시간만큼만 기다렸다가  한번만 메소드를 호출하는 방법입니다.


scheduleUpdate()

 방법은 첫번째 방법과 거의 비슷하지만여기서는 호출할 메소드 이름조차 지정하지 않습니다따로 메소드를 지정하지 않아도 update(float delta)라는 메소드가 자동으로 호출됩니다.


scheduleUpdateWithPriority(int priority)

위에 있는 scheduleUpdate() 거의 동일한데 우선순위를 정할  있는 방법입니다우선 순위는 숫자가 적을수록 먼저 실행되며동시에 여러개의 scheduleUpdate() 사용해야  경우 사용하면 유용합니다.



2. SEL_SCHEDULE selector

스케쥴에서 SEL_SCHEDULE 셀럭테로 호출해야  메소드를 지정하며 사용방법은 아래와 같이 사용하면 됩니다.


HelloWorld::update(float delta) 메소드를 호출  경우

this->schedule(schedule_selector(HelloWorld:update));


위와 같이 일반적인 셀렉터를 사용하는 방법과 동일합니다일반적으로 스케쥴에서 호출하는 메소드는 deleta라는 값을 매개변수로 받고 있습니다 변수에는 스케쥴이 호출되는 시간간격이 들어옵니다셀렉터를 부를 때에는 당연히 ()부분과 매개변수를 빼고 메소드 이름만 입력합니다.



3. unschedule()

 이상 스케쥴을 사용하지 않을 경우에는 unschedule() 메소드를 사용해서 스케쥴일 해제합니다.


unschedule(SEL_SCHEDULE selector)

호출한 메소드를 지정해서 해당되는 스케쥴일 해제하는 방법입니다.


unscheduleAllSelectors()

호출한 모든 스케쥴일 해제하는 방법입니다.


unscheduleUpdate()

scheduleUpdate() 스케쥴만 해제하는 방법입니다.

+ Recent posts