Menu
메뉴란 무엇인가,우린 이미 익숙할것이다.
모든 게임엔 메뉴가 있다.우린 메뉴를 통해서 게임의 설정을 변경할수 있고 게임의 씬을 오고갈수 있다
메뉴는 보통. 시작,종료,설정등의 구성요소를 포함한다.
메뉴도 당연히 자식메뉴가 있다.
Cocos2d-x가 메뉴객체를 제공하여 메뉴기능을 이용한다.
메뉴는 특별한 Node객체이다.
메뉴를 생성해보자.
C++
auto myMenu = Menu::create();
위에서 언급한대로 메뉴 Item을 추가해야 한다.
예를들면 시작,종료,설정등이다.
메뉴 item이 없는 메뉴는 존재의 이유가 없다.
Cocos2d-x는 메뉴item을 추가하는 방법을 제공한다.
예를들면 Lebel객체를 사용하거나 혹은 이미지를 사용하는것이다.
메뉴item은 보통 정상상태와 선택상태가 있다.
메뉴item을 렌더링할때는 정상상태이고 클릭하였을땐 선택상태가 되고 콜백함수가 불린다.
이미지를 사용하여 메뉴를 만들기.
C++
// creating a menu with a single item
// create a menu item by specifying images
auto closeItem = MenuItemImage::create("CloseNormal.png", "CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
auto menu = Menu::create(closeItem, NULL);
this->addChild(menu, 1);
Vector를 사용하여 MenuItem을 생성할수 있습니다.
C++
// creating a Menu from a Vector of items
Vector<MenuItem*> MenuItems;
auto closeItem = MenuItemImage::create("CloseNormal.png", "CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
MenuItems.pushBack(closeItem);
/* repeat for as many menu items as needed */
auto menu = Menu::createWithArray(MenuItems);
this->addChild(menu, 1);
본 문건의 코드예시 이다.Chapter6하나가 Label로서 메뉴에 구성됬다.
람다함수 사용하기
메뉴에서 콜백함수가 불린다고 말했었다.
C++11은 람다함수를 지원한다.
람다함수는 익명함수이다.
당신이 콜백함수를 호출할곳에 람다함수를 사용하면 코드가 간결해지고 내부적 오버헤드를 없앨수있다.
간단한 람다함수이다.
C++
// create a simple Hello World lambda
auto func = [] () { cout << "Hello World"; };
// now call it someplace in code
func();
람다함수로 콜백함수를 작성한다.
C++
auto closeItem = MenuItemImage::create("CloseNormal.png", "CloseSelected.png",
[&](Ref* sender){
// your code here
});
출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/ui_components/menus.html>
'Cocos2d-x v3.17 > 기본기능' 카테고리의 다른 글
[Cocos2d-x 기본기능]UI컴포넌트 CheckBox (0) | 2018.08.11 |
---|---|
[Cocos2d-x 기본기능]UI 컴포넌트 Button (0) | 2018.08.11 |
[Cocos2d-x 기본기능]UI 컴포넌트 소개 및 Label (0) | 2018.08.11 |
[Cocos2d-x 기본기능]Scene 전환 (0) | 2018.08.11 |
[Cocos2d-x 기본기능]Scene 소개 및 생성 (0) | 2018.08.11 |