前言與摘要

各位,如果您有成功的執行hellocpp這個範例至Android手機上。可以try一下"back鍵"與menu鍵",這兩個鍵應該是沒有反應的。本篇文章是介紹如何從hellocpp這個範例去新增back以及menu這兩個按鍵功能至遊戲上。如果您不知道何為"back"或是"menu"請參考下圖。

teach_0301

 

 

方法簡述

cocos2dx有支援"back"與"menu"這兩個按鈕的反應函式。先來看看CCLayer這個類別的定義,這個類別繼承了CCKeypadDelegate。沒錯,所有的功能都在CCKeypadDelegate這個類別內,但我們不再繼續探討這個類別,後面會介紹怎麼使用。我們只要去複寫這類別keyBackClicked()與keyMenuClicked()這兩個函式就可以了。

class CC_DLL CCLayer : public CCNode, public CCTouchDelegate, public CCAccelerometerDelegate, public CCKeypadDelegate

 

開發環境

作業系統:Windows 7

開發工具:VC2010 Express

COCOS2DX版本:2.1.beta3

手機:Moii E801, Android 4.0.4

手機記憶體:512 MB

 

第一步,改寫HelloWorldScene.h

開啟VC,開啟HelloCpp專案。開啟HelloWorldScene.h,在init()下方新增兩行宣告:

class HelloWorld2 : public cocos2d::CCLayer
{
public:
    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
    virtual bool init();
    virtual void keyBackClicked();
    virtual void keyMenuClicked();

// there's no 'id' in cpp, so we recommend returning the class instance pointer static cocos2d::CCScene* scene(); // a selector callback void menuCloseCallback(CCObject* pSender); // implement the "static node()" method manually CREATE_FUNC(HelloWorld2); };

 

 

第二步,實作function

開啟HelloWorldScene.cpp,在程式碼最下方新增以下的程式:

void HelloWorld2::keyBackClicked()
{
    CCLog("You clicked back"); } void HelloWorld2::keyMenuClicked() {
CCLog("You clicked Menu"); }

 

第三步,初始

你以為這樣就結束了嗎?還沒有初始設定的話是一定會沒反應的喔!怎麼去作初始設定呢?我們在HelloWorldScene.cpp中找到init()這個函式,並新增一行程式如下:

bool HelloWorld2::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }

    setKeypadEnabled(true);

///---底下省略 }

 

 

第三步,編譯、執行

直行結果如下,我們觀看一下eclipse中LogCat那一欄,當按下back與menu這兩個按鍵時,該欄位就會出現"You clicked back"與"You clicked Menu"這兩個訊息。

teach_0302  

 

打完收功!

 

 

 

 

 

 

 

文章標籤

全站熱搜

巴比特 發表在 痞客邦 留言(0) 人氣()