ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • cocos2d-x 정리..
    Pause @/Cocos2d-x2 2013. 6. 23. 22:12

    CCLabelTTF* pLabel=CCLabelTTF::create("aaaaaaaaab bbb bbbbc", "Thonburi", 50,CCSize(300.0,200.0 ),kCCTextAlignmentCenter,kCCVerticalTextAlignmentCenter);

    음냐..

      추가한 폰트 사용하기

    - 폰트명을 적는 란에 추가한 폰트명을 적는다.

    - CCLabelTTF::create("~~". "fonts/폰트명.ttf", 숫자)

     

    //스프라이트 생성 및 초기화

    CCSprite* man=CCSprite::create("images/이미지 이름.png");

    //스프라이트 위치 지정

    man->setPosition( ccp(240,160));


    //레이어에 스프라이트 객체 추가

    this->addChild(man);

     

     

     

    ●두 이미지를 한번에 묶기

    - 하나의 스프라이트에 다른 스프라이트를 포함 시킬수 있다.

    - 스프라이트를 합치게 되면 자식 스프라이트의 좌표 기준점은 부모스프라이트의 왼쪽 하단이 된다.

    //부모 스프라이트 생성 및 초기화

    CCSprite* man=CCSprite::create("images/grossini.png");


    //스프라이트 위치 지정

    man->setPosition( ccp(240,160));


    //레이어에 스프라이트 객체 추가

    this->addChild(man);

    //-------------------------------------------


    //자식 스프라이트 생성 및 초기화

    CCSprite* bar=CCSprite::create("images/white-512x512.png");


    //스프라이트 모양 및 크기를 설정

    bar->setTextureRect(CCRectMake(0,0,50,5));


    //스프라이트 색 설정

    bar->setColor(ccRED);


    //위치 지정

    CCSize parentSize;

    parentSize=man->getContentSize(); //부모 스프라이트의 길이 가져옴

    bar->setPosition(ccp(parentSize.width/2.0, parentSize.height+15));


    man->addChild(bar);


    return true;



    }

     

    ●액션

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


    }

     

     

    'Pause @ > Cocos2d-x2' 카테고리의 다른 글

    cocos2d-x transition, parallaxnode  (0) 2013.06.30
    cocos2d-x 스케쥴update, CCSpriteBatchNode  (0) 2013.06.30
    cocos2d-x animation 정리  (0) 2013.06.30
    cocos2d-x 터치 및 스케쥴 정리  (0) 2013.06.29
    cocos2d-x 정리 2일차  (0) 2013.06.24
Designed by Tistory.