cocos2d-luaでAndroidの戻るボタンを制御

環境は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ノートイベントの呼び出しを参考してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください