環境はcocos2d-x 3.15 + Xcode v7.3.1 + macOS Sierra v10.12.4です。
cocos2d-luaでAndroidの戻るボタン(back key)に応答するには、以下のをonEnter()に追加すると反応するはずです。
local function onKeyReleased(keyCode, event) if keyCode == cc.KeyCode.KEY_ESCAPE then print("back") -- cc.Director:getInstance():endToLua() end end local listener = cc.EventListenerKeyboard:create() listener:registerScriptHandler(onKeyReleased, cc.Handler.EVENT_KEYBOARD_RELEASED) local eventDispatcher = self:getEventDispatcher() eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self)
実は上記のコードをonCreate()に入れたことで、戻るボタンを押しても反応しないことで悩みました。
ネットで調べると、似たような問題に直面した人がいたようですが、解決方法がありませんでした。
公式サンプルをよく見ると、onEnter()の呼び出しのタイミングに入れてるので、もしかしたらと思い、結果、図星でした。
そのため、反応しないなぁと思ったら、追加の場所を確認してください。
ちなみに、onEnter()やonEnterTransitionFinish()イベントを呼ばさせるには別途実装が必要ですので、luaノートイベントの呼び出しを参考してください。