私はコロナSDKゲームでランタイムリスナーを使用していますが、それは機能しますが、私が本当に興味を持っているのは、ユーザーがデバイスのハードウェアボリュームコントロールを使用してドロイドフォンまたはタブレットのボリュームを設定することをゲームが妨げないようにすることです. コロナラボのウェブサイトには何も見つかりませんでした。アドバイスをありがとう。
2 に答える
これは、イベントリスナーの「キー」を使用したためです。
これを修正するには、処理しているキーを除いて 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を返します(ボリュームキーが含まれています)その上で!)
このようなランタイム リスナーがある場合 (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
また、ランタイム リスナーはグローバルであることを覚えておいてください。一度リスナーを登録するだけで済みます。使用されなくなったら、忘れずにリスナーを削除してください。
お役に立てれば。乾杯!