1. 程式人生 > >cocos2dx 選單製作+彈性彈出特效

cocos2dx 選單製作+彈性彈出特效

不管是做遊戲還是做應用我們都避免不了要做一個東西,就是選單,那麼在cocos2dx中我們怎樣來製作選單呢,下面詳細講講。ps.雖然cocos2dx做應用也沒什麼大問題,但是遊戲引擎預設每一幀都會重繪,這個對於一般app還是消耗比較大的,所以做應用的時候還是儘量不要使用~

首先我們還是來看看cocos引擎自動給我們生成的一個關閉選單的程式碼:

    auto closeItem = MenuItemImage::create(
                                           "CloseNormal.png",
                                           "CloseSelected.png",
                                           CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
    
	closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
                                origin.y + closeItem->getContentSize().height/2));

這是建立一個選單item的程式碼,在建立選單item的時候可以使用image也可以使用font,這裡是關閉按鈕,所以使用了MenuItemImage來進行建立,引數列表的頭兩個是沒按和按下時使用的紋理圖片,最後一個引數是一個回撥函式,在按下這個item後就會去執行這個函式。然後設定了一下這個item的位置。接下來就要將這個item新增到menu中,看下面這段程式碼:
auto menu = Menu::create(closeItem, NULL);

呼叫Menu的create函式建立一個menu*的變數,引數列表裡面是這個menu中包含的item,現在我們知道了怎樣去建立一個簡單的選單,那麼我們來看看怎樣新增特效,本文要講的是一種彈出後又緩衝彈性的特效,cocos中有提供這種類似的action:EaseElasticOut

關於這個類的具體講解可以參考官方文件:http://cn.cocos2d-x.org/doc/cocos2d-x-3.0/d0/dec/classcocos2d_1_1_ease_elastic_out.html

那麼我們來建立一個帶特效的選單:

首先還是先建立一個item:

auto testItem = MenuItemImage::create(
					"testnormal.png",
					"testselected.png",
            				CC_CALLBACK_1(LoadScene::menutestCallback, this));
testItem->setPosition(Vec2(visibleSize.width/2 + origin.x, origin.y));
先建立一個item,然後將位置放在螢幕的底部中間(豎屏)
testItem->runAction(EaseElasticOut::create(MoveTo::create(2, Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)), 0.35f));
下面來建立這個彈出特效,其實就是讓這個item執行一個action,讓這個item運動到螢幕中央,到達螢幕中央後執行一個彈性緩衝的動作~so easy~

最後將這個item新增到menu中:

auto menu = Menu::create(testItem, NULL);
相關的回撥函式:
LoadScene::menutestCallback
裡面新增需要響應的內容即可~

對於選單還有很多特效~大家可以自己多多嘗試~原理就是給item或menu新增action~