【问题标题】:How To Restart Scenes In Corona SDK?如何在 Corona SDK 中重启场景?
【发布时间】:2011-12-23 09:45:17
【问题描述】:

我正在使用 Corona 的 SDK storyboard API,在我的应用中,我想让用户“再试一次”关卡。我虽然只是打电话

storyboard.gotoScene("level20","flip") 

其中 level20 是当前场景,在某个事件之后(点击“重试”按钮)会起作用,但场景将所有显示对象保留在同一位置,而不是像我来自不同场景时那样重置。

是否可以从同一个场景重新开始一个场景?

谢谢。

编辑:

我正在使用 Corona 的版本:2.0.0,内部版本:2011.704

编辑(可能修复):

我可能已经找到了解决办法。来自“场景清除和删除”中的docs:当您转到新场景时,前一个场景会留在内存中以便快速重新加载,scene:createScene() 会删除此内存。

所以我找到的解决方法是致电scene:createScene(),它似乎有效,但如果这是错误的方法,请告诉我们。谢谢。

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    创建一个“虚拟场景”,您可以在 createScene() 下使用 storyboard.purgeScene("level20") 然后在 enterScene() 中创建一个您可以使用 storyboard.gotoScene("level20","flip") 的函数。确保 ''level'' 20 中的 storyboard.purgeScene ('dummy scene')。你的下一个问题是'我需要创建 20 个虚拟场景吗?没有在storyboard.level = '20'下存储变量而不是从'虚拟场景'调用它

    【讨论】:

      【解决方案2】:

      上面好像不太好用,我用简单的过渡效果得到了我的解决方案。

      function scene:refresh(event)
          local v = self.view
               transition.to(v, {time=500, alpha=0.5, transition=easing.inExpo, onComplete=function(e)
              self:destroyScene()
              self:createScene()
              storyboard.reloadScene()
              transition.to(v, {time=500, alpha=1, transition=easing.outExpo})
          end})
      end
      

      【讨论】:

        【解决方案3】:

        我自己实际上并没有这样做,但基于这里的讨论:

        http://blog.anscamobile.com/2011/11/introducing-the-storyboard-api/

        看来您需要先致电storyboard.purgeScene("level20"),然后再致电storyboard.gotoScene("level20","flip")

        【讨论】:

        • 谢谢,这似乎合乎逻辑,但我刚刚尝试过,模拟器死机,我得到一个“Corona 模拟器已停止工作”窗口。然而,Corona 的终端没有显示任何错误。
        猜你喜欢
        • 1970-01-01
        • 2016-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-14
        • 2020-04-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多