天天看點

Cocos2d-x3.0遊戲執行個體之《别救我》第六篇——從代碼中擷取UI控件

這篇的内容很簡單,擷取ui控件,然後使用它。

還記得我們在ui編輯器中給三個按鈕分别命名了吧?

現在要用上了。

笨木頭花心貢獻,啥?花心?不呢,是用心~ 轉載請注明,原文位址:  文章來源:

首先給tollgatescene再include一些頭檔案,不然等會編譯又報錯了:

上面就是比較完整的使用ui所需要用到的頭檔案了。

然後,擷取ui控件的方法如下,繼續修改createoprui函數:

helper::seekwidgetbyname函數會從ui裡面找控件,一層層的找,父控件找不到,就找子控件,如此遞歸,最後找的名字相符的控件,傳回這個控件對象。

很簡單,不多解釋喇~

ok,最後一步了,現在按鈕擺在那裡什麼都做不了,我們給按鈕添加回調事件~

先給tollgatescene添加三個函數聲明:

這是button點選事件回調時所需要的函數格式。

然後,繼續修改createoprui函數:

利用addtoucheventlistener函數就可以綁定按鈕的回調事件了~

最後了,看看三個回調函數的實作:

是不是感覺有點小複雜?

應該說,有點小麻煩,因為按鈕事件綁定的時候,是沒有區分“按下”、“移動”、“松開”的,是以我們要自己判斷一下,touch_event_ended就是按鈕點選,然後松開的時候的事件。

如果大家覺得麻煩,可以自己改源碼,添加一些函數,在綁定按鈕事件的時候,可以指定綁定哪種事件。以及可以使用std::function來作為參數,這樣很友善,當然,跑題了。為了避免大家混亂,這裡就不介紹了。

ok,現在大家運作遊戲,然後點選這三個操作按鈕,看看主角是不是能左右移動以及放屁(向下沖)吧~

下一篇,添加碰撞檢測,讓主角碰到牆壁之後,進行加血。

沒錯,就是加血,不是扣血~因為《别救我》勝利的條件是血量為0,碰到牆是要懲罰的~

懲罰的方式就是加血~

繼續閱讀