●액션
- 많은 액션은 By와 To로 나뉘는데 By는 지정한 값만큼 변하는 것이고, To는 지정한 값으로 변하는 것이다.
- 위치관련 - CCMoveBy, CCMoveTo, CCJumpBy, CCJumpTo, CCBezierBy, CCBezierTo, CCPlace
- 크기관련 - CCScaleBy, CCScaleTo
- 회전관련 - CCRotateBy, CCRotateTo
- 가시성 - CCShow, CCHide, CCBlink, CCToggleVisibility
- 투명도 - CCFadeIn, CCFadeOut, CCFadeTo
- 색관련 - CCTintBy, CCTintTo
●액션 기본 예제 - HelloWorldScene.cpp의 doAction함수안에 여러가지 액션 함수를 넣어 액션 예제를 확인한다.
- HelloWorldScene.h
#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" #include "Box2D/Box2D.h" #include "SimpleAudioEngine.h" class HelloWorld : public cocos2d::CCLayerColor { public: virtual bool init(); static cocos2d::CCScene* scene();
CREATE_FUNC(HelloWorld); cocos2d::CCSprite* pMan; void doAction(CCObject* pSender); void doActionReverse(CCObject* pSender); void doActionReset(CCObject* pSender); }; #endif // __HELLOWORLD_SCENE_H__ |
- HelloWorldScene.cpp
#include "HelloWorldScene.h" using namespace cocos2d; CCScene* HelloWorld::scene() { CCScene *scene=CCScene::create(); HelloWorld *layer=HelloWorld::create();
scene->addChild(layer); return scene;
} // on "init" you need to initialize your instance bool HelloWorld::init() { if(!CCLayerColor::initWithColor(ccc4(255,255,255,255))) { return false; } /////////////////////// //메뉴 아이템 생성 및 초기화 CCMenuItemFont* pMenuItem1=CCMenuItemFont::create( "Action", this, menu_selector(HelloWorld::doAction)); pMenuItem1->setColor(ccc3(0,0,0)); CCMenuItemFont* pMenuItem2=CCMenuItemFont::create( "ActionReverse", this, menu_selector(HelloWorld::doActionReverse)); pMenuItem2->setColor(ccc3(0,0,0)); CCMenuItemFont* pMenuItem3=CCMenuItemFont::create( "ActionReset", this, menu_selector(HelloWorld::doActionReset)); pMenuItem3->setColor(ccc3(0,0,0)); //메뉴 생성 CCMenu* pMenu=CCMenu::create(pMenuItem1, pMenuItem2, pMenuItem3, NULL); //메뉴 배치 pMenu->alignItemsHorizontally(); //메뉴 위치 지정 pMenu->setPosition(ccp(240, 50)); //레이어에 메뉴 객체 추가 this->addChild(pMenu); //Grossini 스프라이트 추가 pMan=CCSprite::create("Images/grossini.png"); pMan->setPosition(ccp(50,200)); this->addChild(pMan);
return true; } //doAction 메서드 정의 void HelloWorld::doAction(CCObject* pSender) { //액션 정의 } //doActionReverse 메서드 정의 void HelloWorld::doActionReverse(CCObject* pSender) { //액션 리버스 정의 } //doActionReset 메서드 정의 void HelloWorld::doActionReset(CCObject* pSender) { //좌표 초기화 pMan->setPosition(ccp(50, 200)); //회전 초기화 pMan->setRotation(0.0); //크기 초기화 pMan->setScale(1.0); } |
●MoveBy
- ccp(x, y) 해당 값만큼 이동한다.
//doAction 메서드 정의 void HelloWorld::doAction(CCObject* pSender) { //액션 정의 CCActionInterval* myAction=CCMoveBy::create(2, ccp(400, 0)); pMan->runAction(myAction); } //doActionReverse 메서드 정의 void HelloWorld::doActionReverse(CCObject* pSender) { //액션 리버스 정의 CCActionInterval* myAction=CCMoveBy::create(2, ccp(400,0)); CCActionInterval* myActionBack=myAction->reverse(); pMan->runAction(myActionBack); } |
●JumpBy
- (2, ccp(400,0), 50, 3) - cpp(400,0) 만큼 이동하면서 50 높이만큼 3번 점프한다.
//doAction 메서드 정의 void HelloWorld::doAction(CCObject* pSender) { //액션 정으 CCActionInterval* myAction=CCJumpBy::create(2, ccp(400, 0), 50, 3); pMan->runAction(myAction); } //doActionReverse 메서드 정의 void HelloWorld::doActionReverse(CCObject* pSender) { //액션 리버스 정의 CCActionInterval* myAction=CCJumpBy::create(2, ccp(400 ,0), 50, 3); CCActionInterval* myActionBack=myAction->reverse(); pMan->runAction(myActionBack); } |
●CCBezierBy
- 해당값만큼 곡선으로 이동한다.
void HelloWorld::doAction(CCObject* pSender) { //액션 정의 ccBezierConfig bezier; bezier.controlPoint_1=ccp(150, 150); bezier.controlPoint_2=ccp(250, -150); bezier.endPosition=ccp(350,0); CCActionInterval* myAction=CCBezierBy::create(3, bezier); pMan->runAction(myAction); } //doActionReverse 메서드 정의 void HelloWorld::doActionReverse(CCObject* pSender) { //액션 리버스 정의 ccBezierConfig bezier; bezier.controlPoint_1=ccp(150, 150); bezier.controlPoint_2=ccp(250, -150); bezier.endPosition=ccp(350,0); CCActionInterval* myAction=CCBezierBy::create(3, bezier); CCActionInterval* myActionBack=myAction->reverse(); pMan->runAction(myActionBack); } |
●CCPlace
- 해당 위치로 즉시 이동한다.
void HelloWorld::doAction(CCObject* pSender) { //액션 정의 CCFiniteTimeAction* myAction=CCPlace::create(ccp(300,200)); pMan->runAction(myAction); } |
●CCScaleBy
- 해당 수치만큼 크기를 조절한다.
void HelloWorld::doAction(CCObject* pSender) { //액션 액션 CCActionInterval* myAction=CCScaleBy::create(2, 2.0); //create(시간, 배수) pMan->runAction(myAction);
} //doActionReverse 메서드 정의 void HelloWorld::doActionReverse(CCObject* pSender) { //액션 리버스 정의 CCActionInterval* myAction=CCScaleBy::create(2, 2.0); CCActionInterval* myActionBack=myAction->reverse(); pMan->runAction(myActionBack); } |
●CCRotateBy
- 해당 각도만큼 회전한다.
//doAction 메서드 정의 void HelloWorld::doAction(CCObject* pSender) { //액션 액션 CCActionInterval* myAction=CCRotateBy::create(2, 90); pMan->runAction(myAction);
} //doActionReverse 메서드 정의 void HelloWorld::doActionReverse(CCObject* pSender) { //액션 리버스 정의 CCActionInterval* myAction=CCRotateBy::create(2, 90); CCActionInterval* myActionBack=myAction->reverse(); pMan->runAction(myActionBack); } |
'프로그래밍 > cocos2d-x' 카테고리의 다른 글
cocos2d-x 액션3 (0) | 2013.05.29 |
---|---|
cocos2d-x 액션2 (0) | 2013.05.28 |
cocos2d-x 메뉴 (0) | 2013.04.27 |
cocos2d-x 스프라이트(sprite) (0) | 2013.04.25 |
cocos2d-x CCLabelTTF (0) | 2013.04.22 |
댓글