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

我正在使用Corona的SDK storyboard API。在我的应用程序中,我想让用户“重试”这个级别。我想简单地调用

storyboard.gotoScene(“level20”,“flip”)

其中level20是当前场景,在事件(点击“重试”按钮)之后会起作用,但场景会保持所有显示对象不变,而不是像从不同场景中返回时那样重置。

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

感谢。

编辑:

我正在使用Corona的版本:2.0.0,构建:2011.704

编辑(可能的修复):

我可能已经找到了解决方法。从文档中(docs)在“场景清除和删除”中:当您进入新场景时,以前的场景会在内存中保留以进行快速重载,scene:createScene()删除此内存。

因此,我发现的解决方法是调用scene:createScene(),它似乎有效,但如果这是错误的方法,请告诉我们。谢谢。

原文链接 https://stackoverflow.com/questions/8614460

点赞
stackoverflow用户5420
stackoverflow用户5420

我自己其实没有做过,但根据这里的讨论:

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

看起来在调用storyboard.gotoScene("level20","flip")之前需要调用storyboard.purgeScene("level20")

2011-12-23 15:25:26
stackoverflow用户1149637
stackoverflow用户1149637

createScene() 下创建一个“虚拟场景”并进行 storyboard.purgeScene("level20"),然后在 enterScene() 中创建一个函数 storyboard.gotoScene("level20","flip"),确保在“level20”中清除虚拟场景。你接下来的问题可能是“我需要创建20个虚拟场景吗?”不需要,存储一个变量在 storyboard.level = '20' 中,然后从“虚拟场景”中调用它。

在 `createScene()` 下创建一个“虚拟场景”并进行 `storyboard.purgeScene("level20")`,然后在 `enterScene()` 中创建一个函数 `storyboard.gotoScene("level20","flip")`,确保在“level20”中清除虚拟场景。你接下来的问题可能是“我需要创建20个虚拟场景吗?”不需要,存储一个变量在 `storyboard.level = '20'` 中,然后从“虚拟场景”中调用它。
2012-01-14 19:01:52
stackoverflow用户1120405
stackoverflow用户1120405

上述方法似乎效果不佳,我通过简单的过渡效果找到了解决方案。

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
2013-05-03 17:29:04