前言與摘要
各位,如果您有成功的執行hellocpp這個範例至Android手機上。可以try一下"back鍵"與menu鍵",這兩個鍵應該是沒有反應的。本篇文章是介紹如何從hellocpp這個範例去新增back以及menu這兩個按鍵功能至遊戲上。如果您不知道何為"back"或是"menu"請參考下圖。
方法簡述
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"這兩個訊息。
打完收功!
留言列表