-
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