4

我对科罗娜很陌生。

在我的游戏中,我希望有一个包含多个选项的菜单(例如“单人游戏”或“设置”)。当点击这些选项中的任何一个时,屏幕会消失并出现一个新选项。

下一个屏幕(例如在点击“单人游戏”之后)应该有一些文本,如“选择你的角色”,一旦用户点击他们的角色,另一个屏幕就会淡入,等等。

我想知道我所说的是否称为场景,如果不是,它们是什么以及它们是如何工作的?

请随时解释,或者如果太多,请发布指向可理解来源的链接,例如另一个堆栈溢出问题或 youtube 视频。

还有一件事,是否可以让用户滑动屏幕,这会触发将他/她带回不同屏幕/场景的事件?

4

4 回答 4

2

这是了解电晕情节提要的链接:电晕情节提要

是的,您可以使用滑动事件来触发屏幕分页。为此,请参考这个问题: 如何在 Corona SDK 中滑动页面

于 2013-06-21T23:03:35.307 回答
2

目前 corona 支持的场景管理器是composer(故事板已弃用,将来将不可用)

电晕中的场景由以下人员管理和处理composer

这是作曲家教程的链接

每个场景都有它响应的以下事件:

  • create
  • show
  • hide
  • destroy

理解场景生命周期的关键是你需要记住create事件只被调用一次,直到场景被销毁。

每次显示场景show时都会调用该事件

每次场景被关闭hide时都会调用该事件。

destroy仅当操作系统决定摆脱该场景的内存时,才会调用该事件。在您退出应用程序之前,这可能不会发生。

于 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 回答
0

您还可以尝试一个流行的第三方场景管理器,称为 Director 类。它没有内置在 Corona 中,但学习起来更简单一些。

http://developer.coronalabs.com/code/director-class-10

于 2013-06-27T17:55:23.693 回答