특정메서드를 호출하는 함수



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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "test146.hpp"
 
USING_NS_CC;
 
Scene* Test146::createScene()
{
    auto scene = Scene::create();
    
    auto layer = Test146::create();
    scene->addChild(layer);
    
    return scene;
}
 
 
bool Test146::init()
{
    if ( !Layer::init())
    {
        return false;
    }
    
    
    auto sprite1 = Sprite::create("ball.png");
    sprite1->setPosition(Point(100,100));
    this->addChild(sprite1);
    
    auto sprite2 = Sprite::create("ball.png");
    sprite2->setPosition(Point(100,50));
    this->addChild(sprite2);
    
    
    auto moveto = MoveTo::create(3.0, Point(400200)); //지정한 위치로 이동
    auto delay = DelayTime::create(3.0);    //3초간 딜레이
 
    
    //CallFunc , CallFuncN : 특정메서드를 호출하는 함수
    //CallFunc : 매개변수가 없는 함수를 호출
    //CallFuncN : 매개변수가 있는 함수를 호출
    
    //CallFunc( CC_CALLBACK_0(매개변수가 없는 메서드명, 타깃))
    auto callback1 = CallFunc::create(CC_CALLBACK_0(Test146::setCallFunc_0, this)); //3초후 디버깅창에 로그를 출력
    
    //CallFuncN( CC_CALLBACK_*(매개변수가 있는 메서드명, 타깃, 매개변수...))
    auto callback2 = CallFuncN::create(CC_CALLBACK_1(Test146::setCallFunc_1, this));
    auto callback3 = CallFuncN::create(CC_CALLBACK_1(Test146::setCallFunc_2, this, (void*)"Hell Cocos!"));
    auto callback4 = CallFuncN::create(CC_CALLBACK_1(Test146::setCallFunc_3, this, sprite2));
    
    
    auto action = Sequence::create(moveto, delay, callback1, delay, callback2, delay, callback3, delay, callback4, NULL);
    sprite1->runAction(action);
    
    
    return true;
}
 
//매개변수 없음
void Test146::setCallFunc_0(){
    CCLOG("Test146::setCallFunc_0");
}
 
//매개변수로 실행하는 객체를 넘김
void Test146::setCallFunc_1(Ref *sender){
    CCLOG("Test146::setCallFunc_1");
    
    auto sprite = (Sprite*)sender;
    sprite->setScale(2);    //실행하는 객체가 스프라이트 이므로 형변환하고 크기를 2배 키움
}
 
//매개변수로 실행하는 객체와 다른 매개변수를 넘김
void Test146::setCallFunc_2(Ref *sender, void *d)
{
    CCLOG("Test146::setCallFunc_2 = %s", (char*)d);
    
    auto sprite = (Sprite*)sender;
    sprite->setScale(2);
}
 
//매개변수로 실행하는 객체와 다른 객체를 넘김
void Test146::setCallFunc_3(Ref *sender, Ref *object){
    CCLOG("Test146::setCallFunc_3");
    
    auto sprite1 = (Sprite*)sender;
    sprite1->setScale(2);
    
    auto sprite2 = (Sprite*)object;
    sprite2->setPosition(400100);
}
 
 
 
cs



결과

1
2
3
4
Test146::setCallFunc_0
Test146::setCallFunc_1
Test146::setCallFunc_2 = Hell Cocos!
Test146::setCallFunc_3
cs




+ Recent posts