使用Corona的SDK storyboard API,在我的应用中,我想让用户“再试一次”关卡。我只是简单地打电话给
storyboard.gotoScene("level20","flip")
其中level20是当前场景,在事件(点击“再试一次”按钮)之后可以工作,但是场景将所有显示对象保持在同一个地方,而不是像我来自不同场景时那样重置。
是否可以从同一场景重新启动场景?
感谢。
修改
使用Corona的版本:2.0.0,Build:2011.704
修改(可能修复):
我可能已找到修复程序。从“场景清除和移除”中的docs:当你转到一个新场景时,前一个场景会在内存中进行快速重新加载,场景:createScene()会删除此内存。
所以我找到的修复方法是调用scene:createScene()
,它似乎有用,但如果这是错误的方法,请告诉我们。感谢。
答案 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