4

コロナ初心者です

私のゲームでは、いくつかのオプション (「シングル プレイヤー」や「設定」など) を含むメニューが必要です。これらのオプションのいずれかをタップすると、画面がフェードアウトし、新しいオプションが表示されます。

この次の画面 (たとえば、「シングル プレイヤー」をタップした後) には、「キャラクターを選択してください」などのテキストが表示され、ユーザーがキャラクターをタップすると、別の画面がフェード インします。

私が話していることがシーンと呼ばれるかどうか、そうでない場合、それらは何で、どのように機能するのか知りたかったのです?

お気軽に説明してください。説明が多すぎる場合は、別のスタック オーバーフローの質問や YouTube ビデオなど、わかりやすいソースへのリンクを投稿してください。

もう1つ、ユーザーに画面をスワイプさせて、別の画面/シーンに戻るイベントをトリガーすることは可能ですか?

4

4 に答える 4

2

コロナがサポートする現在のシーン マネージャーはcomposerです (ストーリーボードは非推奨であり、将来的には使用できなくなります)

コロナでのシーンはcomposer

これは作曲家のチュートリアルへのリンクです

各シーンには、応答する次のイベントがあります。

  • create
  • show
  • hide
  • destroy

シーンのライフサイクルを理解するための鍵は、シーンが破棄されるまでイベントが1 回createだけ呼び出されることを覚えておく必要があることです。

シーンが表示されるたびにイベントshowが呼び出されます

このイベントは、シーンが閉じられるたびhideに呼び出されます。

このイベントdestroyは、OS がそのシーンのメモリを削除することを決定した場合にのみ呼び出されます。これは、アプリを終了するまで発生しない場合があります。

于 2014-04-08T16:54:36.793 に答える
1

はい、組織化されたゲームの場合、その計画はすべてシーンを使用して実行できます。

すべてのシーンについて、このページの最後にあるこの推奨形式に従うことができます。この回答の最後にここに入力します。

シーンを取得したら、次のように呼び出します。

storyboard.gotoScene("name_Of_The_Scene")

そしてシーンを消す

storyboard.purgeScene("name_Of_The_Scene")

コロナのタッチイベントを使ってスワイプ効果を実装できると思います(とても使いやすいです)。私の場合、シーン間のトランジション効果を持つボタンを使用します。

シーンに合わせた推奨フォーマット

(コピー&ペースト用)

local storyboard = require( "storyboard" )
local scene = storyboard.newScene()

----------------------------------------------------------------------------------
-- 
--      NOTE:
--      
--      Code outside of listener functions (below) will only be executed once,
--      unless storyboard.removeScene() is called.
-- 
---------------------------------------------------------------------------------


-- local forward references should go here --


---------------------------------------------------------------------------------
-- BEGINNING OF YOUR IMPLEMENTATION
---------------------------------------------------------------------------------

-- Called when the scene's view does not exist:
function scene:createScene( event )
        local group = self.view

    -----------------------------------------------------------------------------

    --      CREATE display objects and add them to 'group' here.
    --      Example use-case: Restore 'group' from previously saved state.

    -----------------------------------------------------------------------------

end


-- Called BEFORE scene has moved onscreen:
function scene:willEnterScene( event )
       local group = self.view

     -----------------------------------------------------------------------------

     --      This event requires build 2012.782 or later.

     -----------------------------------------------------------------------------

end


-- Called immediately after scene has moved onscreen:
function scene:enterScene( event )
        local group = self.view

         -----------------------------------------------------------------------------

        --      INSERT code here (e.g. start timers, load audio, start listeners, etc.)

        -----------------------------------------------------------------------------

 end


 -- Called when scene is about to move offscreen:
 function scene:exitScene( event )
         local group = self.view

         -----------------------------------------------------------------------------

         --      INSERT code here (e.g. stop timers, remove listeners, unload     sounds,etc.)

-----------------------------------------------------------------------------

 end


-- Called AFTER scene has finished moving offscreen:
function scene:didExitScene( event )
        local group = self.view

    -----------------------------------------------------------------------------

    --      This event requires build 2012.782 or later.

    -----------------------------------------------------------------------------

 end


 -- Called prior to the removal of scene's "view" (display group)
  function scene:destroyScene( event )
         local group = self.view

         -----------------------------------------------------------------------------

         --      INSERT code here (e.g. remove listeners, widgets, save state, etc.)

         -----------------------------------------------------------------------------

 end


-- Called if/when overlay scene is displayed via storyboard.showOverlay()
 function scene:overlayBegan( event )
         local group = self.view
         local overlay_name = event.sceneName  -- name of the overlay scene

         -----------------------------------------------------------------------------

         --      This event requires build 2012.797 or later.

         -----------------------------------------------------------------------------

 end


 -- Called if/when overlay scene is hidden/removed via storyboard.hideOverlay()
  function scene:overlayEnded( event )
         local group = self.view
         local overlay_name = event.sceneName  -- name of the overlay scene

         -----------------------------------------------------------------------------

         --      This event requires build 2012.797 or later.

         -----------------------------------------------------------------------------

 end



  ---------------------------------------------------------------------------------
  -- END OF YOUR IMPLEMENTATION
  ---------------------------------------------------------------------------------

 -- "createScene" event is dispatched if scene's view does not exist
  scene:addEventListener( "createScene", scene )

  -- "willEnterScene" event is dispatched before scene transition begins
  scene:addEventListener( "willEnterScene", scene )

 -- "enterScene" event is dispatched whenever scene transition has finished
  scene:addEventListener( "enterScene", scene )

  -- "exitScene" event is dispatched before next scene's transition begins
  scene:addEventListener( "exitScene", scene )

  -- "didExitScene" event is dispatched after scene has finished transitioning out
  scene:addEventListener( "didExitScene", scene )

 -- "destroyScene" event is dispatched before view is unloaded, which can be
  -- automatically unloaded in low memory situations, or explicitly via a call to
  -- storyboard.purgeScene() or storyboard.removeScene().
  scene:addEventListener( "destroyScene", scene )

 -- "overlayBegan" event is dispatched when an overlay scene is shown
 scene:addEventListener( "overlayBegan", scene )

 -- "overlayEnded" event is dispatched when an overlay scene is hidden/removed
 scene:addEventListener( "overlayEnded", scene )

  ---------------------------------------------------------------------------------

  return scene
于 2013-08-21T07:29:10.693 に答える