본문 바로가기

Cocos2d-x v3.17/기본기능

[Cocos2d-x 기본기능]UI 컴포넌트 Menu

반응형

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

   

 


반응형