특정메서드를 호출하는 함수
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(400, 200)); //지정한 위치로 이동 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(400, 100); } | cs |
결과
1 2 3 4 | Test146::setCallFunc_0 Test146::setCallFunc_1 Test146::setCallFunc_2 = Hell Cocos! Test146::setCallFunc_3 | cs |