2016년 12월 30일 금요일

Cocos2d-x 기초

Cocos2d-x 기초
2016 12 29일 목요일
오후 10:53
좌표계
Cocos2d-x에서 사용하는 좌표계는 (0,0)좌표가 화면 왼쪽 아래에 위치한다. (OpenGL 기반으로 되어있기 때문)
앵커포인트
앵커포인트는 화면에 이미지나 텍스트같은 객체를 출력할 기준이 되는 .
값의 범위는 x y모두 0부터 1까지.
로그
CCLOG("Hello!!");

윈도우 크기
Size winSize = Director::getInstance()->getWinSize();

이미지
Sprite* spr = Sprite::create("HelloWorld.png", Rect(0,0,100,100));
spr->setAnchorPoint(Point(0.5, 0.5));
spr->setPosition(Point(200, 200));
spr->setScale(0.5);
addChild(spr, 0);

라벨
Label* label = Label::createWithSystemFont("Hello Hyun", "Thonburi", 34);
label->setAnchorPoint(Point(0.5, 0.5));
label->setPosition(winSize/2);
label->enableShadow(Color4B(0, 0, 0, 255));
addChild(label);

메뉴버튼
item_1 = MenuItemImage::create("btn-play-normal.png", "btn-play-selected.png", CC_CALLBACK_1(HelloWorld::menuCallback, this));
item_2 = MenuItemImage::create("btn-highscores-normal.png", "btn-highscores-selected.png", CC_CALLBACK_1(HelloWorld::menuCallback, this));
item_3 = MenuItemImage::create("btn-about-normal.png", "btn-about-selected.png", CC_CALLBACK_1(HelloWorld::menuCallback, this));
auto menu = Menu::create(item_1, item_2, item_3, NULL);
menu->alignItemsVertically();
this->addChild(menu);

void HelloWorld::menuCallback(Ref *sender)
{
if (sender == item_1)
{
CCLOG("menuCallback 1..");
}
if (sender == item_2)
{
CCLOG("menuCallback 2..");
}
if (sender == item_3)
{
CCLOG("menuCallback 3..");
}
}

MenuItemImage* item_1 = MenuItemImage::create("btn-play-normal.png", "btn-play-selected.png", "btn-play-selected.png", CC_CALLBACK_1(HelloWorld::menuCallback, this));
MenuItemImage* item_2 = MenuItemImage::create("btn-highscores-normal.png", "btn-highscores-selected.png", CC_CALLBACK_1(HelloWorld::menuCallback, this));
MenuItemImage* item_3 = MenuItemImage::create("btn-about-normal.png", "btn-about-selected.png", CC_CALLBACK_1(HelloWorld::menuCallback, this));
auto menu = Menu::create(item_1, item_2, item_3, NULL);
menu->alignItemsVertically();
this->addChild(menu);

item_1->setEnabled(false);
메뉴아이템 : 바로 문자 입력 가능
item_1 = MenuItemFont::create("Play", CC_CALLBACK_1(HelloWorld::menuCallback, this));
item_2 = MenuItemFont::create("High Scores", CC_CALLBACK_1(HelloWorld::menuCallback, this));
item_3 = MenuItemFont::create("About", CC_CALLBACK_1(HelloWorld::menuCallback, this));
auto menu = Menu::create(item_1, item_2, item_3, NULL);
menu->alignItemsVertically();
this->addChild(menu);

메뉴아이템라벨 : 라벨을 생성하고 넣는 방식으로 다양한 응용이 가능
auto label_1 = Label::createWithSystemFont("Play", "Thonburi", 50);
auto label_2 = Label::createWithSystemFont("High Scores", "Thonburi", 50);
auto label_3 = Label::createWithSystemFont("About", "Thonburi", 50);

auto item_1 = MenuItemLabel::create(label_1, CC_CALLBACK_1(HelloWorld::menuCallback, this));
auto item_2 = MenuItemLabel::create(label_2, CC_CALLBACK_1(HelloWorld::menuCallback, this));
auto item_3 = MenuItemLabel::create(label_3, CC_CALLBACK_1(HelloWorld::menuCallback, this));

auto menu = Menu::create(item_1, item_2, item_3, NULL);
menu->alignItemsVertically();
this->addChild(menu);

메뉴아이템스프라이트
auto spr_1_n = Sprite::create("btn-play-normal.png");
auto spr_1_s = Sprite::create("btn-play-selected.png");
auto spr_2_n = Sprite::create("btn-highscores-normal.png");
auto spr_2_s = Sprite::create("btn-highscores-selected.png");
auto spr_3_n = Sprite::create("btn-about-normal.png");
auto spr_3_s = Sprite::create("btn-about-selected.png");
spr_3_n->setScaleY(0.5);

auto item_1 = MenuItemSprite::create(spr_1_n, spr_1_s, CC_CALLBACK_1(HelloWorld::menuCallback, this));
auto item_2 = MenuItemSprite::create(spr_2_n, spr_2_s, CC_CALLBACK_1(HelloWorld::menuCallback, this));
auto item_3 = MenuItemSprite::create(spr_3_n, spr_3_s, CC_CALLBACK_1(HelloWorld::menuCallback, this));

auto menu = Menu::create(item_1, item_2, item_3, NULL);
menu->alignItemsVertically();
this->addChild(menu);

메뉴아이템토글
auto item_1_1 = MenuItemImage::create("btn-play-normal.png", "btn-play-selected.png"); // 토글의 각 메뉴아이템은 콜백을 지정하지 않음
auto item_1_2 = MenuItemImage::create("btn-highscores-normal.png", "btn-highscores-selected.png"); // 토글의 각 메뉴아이템은 콜백을 지정하지 않음
auto item_1 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::menuCallback, this), item_1_1, item_1_2, NULL); // 반드시 마지막의 NULL 입력

auto item_2 = MenuItemImage::create("btn-about-normal.png", "btn-about-selected.png", CC_CALLBACK_1(HelloWorld::menuCallback, this));

auto menu = Menu::create(item_1, item_2, NULL);
menu->alignItemsVertically();
this->addChild(menu);


[Cocos2d-x 3 모바일 게임 프로그래밍] 의 내용을 정리 

댓글 없음:

댓글 쓰기