본문 바로가기
프로그래밍/cocos2d-x

cocos2d-x 액션1

by -현's- 2013. 5. 28.
반응형

 

 

●액션

- 많은 액션은  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

댓글