스케쥴 실행하고 중지하기 3가지 방법



h++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef test246_hpp
#define test246_hpp
 
#include "cocos2d.h"
 
USING_NS_CC;
 
class Test246 : public cocos2d::Layer
{
public:
    static cocos2d::Scene* createScene();
    
    virtual bool init();
    
    // implement the "static create()" method manually
    CREATE_FUNC(Test246);
    
    int scheduleIndex = 0;
    int updateIndex = 0;
    
    void scheduleCallback(float delta); //schedule 콜백함수
    void update(float delta);           //scheduleUpdate 콜백함수
    void scheduleOnceCallback(float delta);  //scheduleOnce 콜백함수
};
#endif /* test246_hpp */
cs



c++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "test246.hpp"
 
USING_NS_CC;
 
Scene* Test246::createScene()
{
    auto scene = Scene::create();
    
    auto layer = Test246::create();
    scene->addChild(layer);
    
        
    return scene;
}
 
 
bool Test246::init()
{
    if ( !Layer::init())
    {
        return false;
    }
    
    //지정된 메인 프레임 시간간격으로 콜백함수 호출
    this->schedule(schedule_selector(Test246::scheduleCallback));
    
    //update 콜백함수 호출
    this->scheduleUpdate();
 
    //scheduleOnce : 대기시간만큼 대기한 후 한번만 호출
    this->scheduleOnce(schedule_selector(Test246::scheduleOnceCallback), 5.0);
    
    
    return true;
}
 
 
//스케쥴 콜백함수
void Test246::scheduleCallback(float delta){
    scheduleIndex++;
    CCLOG("shedule callback");
    
    if(scheduleIndex > 5){
        //unschedule : 선택한 스케쥴을 중지
        //unscheduleAllSelectors : 모든 스케쥴을 중지
        //unscheduleUpdate : update 스케쥴을 중지
        this->unschedule(schedule_selector(Test246::scheduleCallback));
    }
}
 
//업데이트 콜백함수
void Test246::update(float delta){
    updateIndex++;
    CCLOG("shedule update callback");
    
    if(updateIndex > 5){
        this->unscheduleUpdate();
    }
}
 
//스케쥴 원스 콜백함수
void Test246::scheduleOnceCallback(float delta){
    CCLOG("shedule once callback");
}
 
cs



결과

scheduleUpdate 와 schedule 콜백함수를 5번 실행 후 중지한다

5초 후 scheduleOnce 콜백함수 실행 후 중지한다

1
2
3
4
5
6
7
8
9
10
11
12
13
shedule update callback
shedule update callback
shedule callback
shedule update callback
shedule callback
shedule update callback
shedule callback
shedule update callback
shedule callback
shedule update callback
shedule callback
shedule callback
shedule once callback
cs


+ Recent posts