cocos2d-x 3.0でkeybackClickedが非推奨になってた話。
cocos2dのバージョン3.0使って開発しているとたびたび非推奨の関数が使えなくなってることに気づく。今回もそんな話。
Androidにはバックキーがついてて、これがつかえないアプリなんて滅びればいいので、使えるようにした。
3.0以前はvoid keybackClicked()なる関数が使えたのだけれど、それももう昔のこと。
3.0でEventListerが導入されたので、そいつが担当することになりました。
普通のタッチと似てるので、そっちを先に体験しとくとスムーズです。
参考:Cocos2d-x 3.0 beta2 シングルタッチ&マルチタッチイベント取得まとめ | Cocoa部
実装
Hoge.h
public: void onKeyReleased(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event * event);
Hoge.cpp
bool Hoge::init() { auto keyboardListener = EventListenerKeyboard::create(); keyboardListener->onKeyReleased = CC_CALLBACK_2(Hoge::onKeyReleased, this); this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(keyboardListener, this); ~~~~~~~~~~~~~~~~~~~~~~~~~ void Hoge::onKeyReleased(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event * event) { if ( keyCode == EventKeyboard::KeyCode::KEY_BACKSPACE ) { Director::sharedDirector()->end(); } }
ヘッダファイルで宣言して、cppのinitでリスナー作ってDispatcherに食わせて、onKeyReleasedでほげほげする。
ここでは戻るボタン(KEY_BACKSPACE)を押したらアプリが終了するようにしてる。
参考
cocos2d-x: Layer Class Reference
[Tutorial] How to get multi-platform keyboard events! - Cocos2d-x Forum