cocos2dX UI控件之CCMenu

說道遊戲, 有個我們不得不說的控件, 菜單控件(CCMenu), 平常我們與遊戲很多的交互都來自於菜單, 菜單是遊戲中不可或缺的一部分, 我們今天就來看看菜單控件, 

用法:

CCMenu::create( 菜單項1, 菜單項2..., NULL);

我們開始創建菜單( 旁白: 騙子, 根本就不行嘛)

別急, 我們先來看看參數, 哦  又是一個可變長參數, 結尾又要用NULL表示, 前面的參數是傳進來的菜單項, 表示我們創建了哪些菜單

我們先來看看有哪些

CCMenuItemImage::create( "沒有點擊的時候顯示的圖片", "點擊的時候顯示的圖片", 目標對象(一般寫this), menu_selector(回調函數));//用來創建圖片菜單

CCMenuItemFont::::create( "顯示的文字",  目標對象(一般寫this), menu_selector(回調函數));//用來創建文字菜單, 顯示的文字也可以使用字體標籤, 當然, 我們得換成CCMenuItemLabel

CCMenuItemToggle::createWithTarget( 目標對象(一般寫this), menu_selector(回調函數), 可變長參數表(CCMenuItem對象), NULL);//用來創建開關菜單

我們找兩張圖片啊:


再寫菜單之前, 我們創建兩個函數( 旁白: 明明就是三個嘛), 用來點擊菜單時候的調用這些函數:

在頭文件里加上:

void menuCloseCallback(CCObject* pSender);
	void font( CCObject* pSender);
	void toggle( CCObject* pSender);

在cpp文件裏實現:

void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    CCLOG( "imageMenu");
}

void HelloWorld::font( CCObject* pSender)
{
	CCLOG( "<span style="font-family: Arial, Helvetica, sans-serif;">fontMenu</span><span style="font-family: Arial, Helvetica, sans-serif;">");</span>
}

void HelloWorld::toggle( CCObject* pSender)
{
	CCLOG( "<span style="font-family: Arial, Helvetica, sans-serif;">toggleMenu</span><span style="font-family: Arial, Helvetica, sans-serif;">");</span>
}


我在函數裏就不實現過多的內容, 就在輸出打印一下提示信息, 所以待會兒我們可以在輸出裏面看見我們打印的文字

CCMenuItemImage* imgMenu = CCMenuItemImage::create( "CloseNormal.png", 
		"CloseSelected.png", 
		this, 
		menu_selector(HelloWorld::menuCloseCallback));							//創建圖片菜單
	CCMenuItemFont* fontMenu = CCMenuItemFont::create( "Play Game", 
		this, 
		menu_selector(HelloWorld::font));										//創建文字菜單
	CCMenuItemToggle* toggleMenu = CCMenuItemToggle::createWithTarget( this,	//創建開關菜單
		menu_selector(HelloWorld::toggle), 
		CCMenuItemFont::create( "on"), 
		CCMenuItemFont::create( "off"), 
		NULL);

	CCMenu* menu = CCMenu::create( imgMenu, fontMenu, toggleMenu, NULL);		//創建菜單, 將菜單項加載進來
	menu->setPosition( ccp( visibleSize.width / 2, visibleSize.height / 2));
	addChild( menu);


我們看看效果:


咦, 好像不對啊, 怎麼說有的菜單都擠在一起了啊, 原來我們沒有對每個菜單項設置位置, 我們可以對每個菜單項設置位置哦, 

其實, cocos2dX還爲我們提供了其他解決辦法, 例如縱向對其之類的,  看看這個

//	menu->alignItemsHorizontally();         // 垂直對齊
	menu->alignItemsVertically();           // 水平對象
//	menu->alignItemsInColumns(2, 1, NULL);  // 兩行,兩列,一列


看看, 這是個好東西吧, 自動就對齊了:


我們來點擊每個菜單看看效果,


 點擊圖片菜單, 按下的時候兩張圖片切換了, 並且在輸出打印了imgMenu, 

點擊文字菜單, 文字放大, 並且輸出打印了fontMenu

點擊文字菜單, 文字改變, 並且輸出打印了toggleMenu


嗯, 今天也差不多啦, CCMenu很實用簡單的, 還是那句話, 希望大家多練習


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章