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

思うんだけど

エラー情報が少なすぎ。非推奨なら非推奨って表示されてほしい。
あとcocos2dユーザにはWindowsユーザ多いのかな。導入でWindows向けの説明をよく見かけたけど。