quick-cocos2d-x學習筆記【5】——建立菜單,quickcocos2d

來源:互聯網
上載者:User

quick-cocos2d-x學習筆記【5】——建立菜單,quickcocos2d

菜單也是遊戲中不可缺少的元素之一,quick中對於menuItem的封裝有兩種,一個是圖片菜單,一個是文字菜單。


一、圖片菜單ui.newImageMenuItem(params)

可用參數:

  • image: 正常狀態的按鈕映像
  • imageSelected: 按鈕按下時的映像(可選)
  • imageDisabled: 按鈕被禁用時的映像(可選)
  • listener: 回呼函數
  • tag: 按鈕的 Tag,會傳入回呼函數。多個按鈕使用同一個回呼函數時,可根據 Tag 區分哪一個按鈕被按下(可選)
  • x, y: 座標(可選)
  • sound: 按鈕按下時播放什麼音效(可選)
對於params的參數名稱是一定不可以寫錯,和上節中label一樣,所以這個還是需要多敲幾次記住一下。tag是配合多個item共用一個回呼函數來使用的,所以如果單獨寫一個function,記得有一個tag參數。


簡單寫一個圖片按鈕

local item1 = ui.newImageMenuItem({    image = "CloseNormal.png",    imageSelected = "CloseSelected.png",    listener = onClicked,    x = display.cx,    y = display.height*0.7,    tag = 1})

二、文字菜單ui.newTTFLabelMenuItem(params)

文本按鈕的參數非常多,除了menuitem一些基本的參數外,還可以使用ui.newTTFLabel()中的參數,例如text常值內容,size文字大小等。

再寫一個文字菜單

local item2 = ui.newTTFLabelMenuItem({    text = "MenuItem",    size = 50,    aligh = ui.TEXT_ALIGN_CENTER,    listener = onClicked,    x = display.cx,    y = display.height*0.3,    tag = 2})


和Cocos2dx一樣,我們還是需要一個Menu大管家來管理這些menuItem,如果使用原來lua的寫法,我們要addChild每一個item,quick在這裡把menu重新封裝,讓其使用和c++的寫法一樣,這就方便很多了。

local menu = ui.newMenu({item1, item2})self:addChild(menu)

這樣就添加完成了,回呼函數咱們還沒說,我們再看下。

local function onClicked(tag)    if tag == 1 then    print("item1 clicked")    elseif tag == 2 then    print("item2 clicked")    endend


由於這個function是局部(local)的,所以一定要放在menuItem之前,和C一樣,否則程式會認不出該函數。當然也可以直接在listener內部就寫好回呼函數,再建立一個item,

local item3 = ui.newTTFLabelMenuItem({    text = "MenuItem2",    size = 30,    aligh = ui.TEXT_ALIGN_CENTER,    listener = function ()    print("item3 clicked")    end,    x = display.cx,    y = display.cy,})

是不是so easy!基本的使用就是這樣,最後來一個完整的代碼和效果。

function MyScene:ctor()local function onClicked(tag)    if tag == 1 then    print("item1 clicked")    elseif tag == 2 then    print("item2 clicked")    endendlocal item1 = ui.newImageMenuItem({    image = "CloseNormal.png",    imageSelected = "CloseSelected.png",    listener = onClicked,    x = display.cx,    y = display.height*0.7,    tag = 1})local item2 = ui.newTTFLabelMenuItem({   text = "MenuItem",   size = 50,   aligh = ui.TEXT_ALIGN_CENTER,    listener = onClicked,    x = display.cx,    y = display.height*0.3,    tag = 2})local item3 = ui.newTTFLabelMenuItem({   text = "MenuItem2",   size = 30,   aligh = ui.TEXT_ALIGN_CENTER,    listener = function ()    print("item3 clicked")    end,    x = display.cx,    y = display.cy,})local menu = ui.newMenu({item1, item2, item3})self:addChild(menu)end

效果如下,




cs怎從CS檔案夾中開啟(就是不從捷徑——案頭、開始菜單中……【解決後加510分】

進入CS的檔案夾 裡邊一般有好幾個小人(拿槍的灰色小人,具體幾個忘了) 看他們的尾碼 有一個是 .exe 的 如果沒有這個尾碼 你可以在工具 ------- 檔案夾選項--------在隱藏已知檔案類型的副檔名這個選項前的勾去掉 你就能找到尾碼了
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.