1

私はコロナSDKゲームでランタイムリスナーを使用していますが、それは機能しますが、私が本当に興味を持っているのは、ユーザーがデバイスのハードウェアボリュームコントロールを使用してドロイドフォンまたはタブレットのボリュームを設定することをゲームが妨げないようにすることです. コロナラボのウェブサイトには何も見つかりませんでした。アドバイスをありがとう。

4

2 に答える 2

3

これは、イベントリスナーの「キー」を使用したためです。

これを修正するには、処理しているキーを除いて FALSE を返す必要があります。「キー」リスナーが true を返す場合、「そのキーで何かを行ったので、OS はそれを無視する必要があります」という意味であり、false を返す場合は、それは、「私はそのキーで何もしなかったので、OSがそれを処理する必要があります」という意味です

では、なぜ音量を設定できないのでしょうか。これは、「キー」イベントをどこかにトラップしていて、押されたキーがボリューム 1 のときに false を返さないためです (最も簡単な方法は、必要な場合は「true」を返し、それ以外の場合は「false」を返すことです)。

この問題が発生したとき、次のコードがありました。

local downPress = false
function onBackButtonPressed(e)
    if (e.phase == "down" and e.keyName == "back") then
        downPress = true
    else
        if (e.phase == "up" and e.keyName == "back" and downPress) then
            storyboard.gotoScene( LastScene , "fade", 200 );
            Runtime:removeEventListener( "key", onBackButtonPressed );
        end
    end
end

私が望んでいたものには問題なく機能しましたが、ボリュームキーがブロックされました。「return」ステートメントがないことに注意してください。

コードは次のとおりです。

local downPress = false
function onBackButtonPressed(e)
    if (e.phase == "down" and e.keyName == "back") then
        downPress = true
        return true
    else
        if (e.phase == "up" and e.keyName == "back" and downPress) then
            storyboard.gotoScene( LastScene , "fade", 200 );
            Runtime:removeEventListener( "key", onBackButtonPressed );
            return true
        end
    end
    return false; --THE LINE YOU REALLY NEED IS THIS ONE!!!
end

だから私がしているのは、戻るキーが押されて押されたときにのみtrueを返し(私の意図は、戻るキーが押されたときにアプリが終了しないようにすることでした。おそらくこれもあなたが望んでいたことです)、他のすべてに対してfalseを返します(ボリュームキーが含まれています)その上で!)

于 2012-08-30T16:26:36.050 に答える
0

このようなランタイム リスナーがある場合 (Android の [戻る] ハード ボタンで戻るため):

Runtime:addEventListener( "key", handleBackButton )

リスナーの最後に「return true」を忘れずに追加してください。

local function handleBackButton( event)
    if (event.phase == "down") and (event.keyName =="back") then
        -- your code for going back
        return true
    end
end

また、ランタイム リスナーはグローバルであることを覚えておいてください。一度リスナーを登録するだけで済みます。使用されなくなったら、忘れずにリスナーを削除してください。

お役に立てれば。乾杯!

于 2012-08-29T06:50:23.913 に答える