如何在Corona SDK中重新启动场景?

时间:2011-12-23 09:45:17

标签: lua corona

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

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

其中level20是当前场景,在事件(点击“再试一次”按钮)之后可以工作,但是场景将所有显示对象保持在同一个地方,而不是像我来自不同场景时那样重置。

是否可以从同一场景重新启动场景?

感谢。

修改

使用Corona的版本:2.0.0,Build:2011.704

修改(可能修复):

我可能已找到修复程序。从“场景清除和移除”中的docs:当你转到一个新场景时,前一个场景会在内存中进行快速重新加载,场景:createScene()会删除此内存。

所以我找到的修复方法是调用scene:createScene(),它似乎有用,但如果这是错误的方法,请告诉我们。感谢。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我自己并没有真正做到这一点,而是基于此处的讨论:

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

您似乎需要在致电storyboard.purgeScene("level20")

之前致电storyboard.gotoScene("level20","flip")

答案 2 :(得分:0)

上面似乎效果不好,我得到的解决方案具有简单的过渡效果。

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