Как перезапустить сцены в Corona SDK? - PullRequest
3 голосов
/ 23 декабря 2011

Я использую Corona SDK API раскадровки , в моем приложении я хочу позволить пользователям "повторить попытку" уровня.Хотя я просто вызываю

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

, где level20 - текущая сцена, после того, как событие (нажатие кнопки «повторить попытку») будет работать, но сцена сохраняет все свои экранные объекты в одном месте, а не сбрасывает, каккогда я прихожу из другой сцены.

Можно ли перезапустить сцену из той же сцены?

Спасибо.

Редактировать:

Использую версию Corona: 2.0.0, сборка: 2011.704

Редактировать (возможное исправление):

Возможно, я нашел исправление.Из документов в «Очистке и удалении сцены»: при переходе в новую сцену предыдущая сцена остается в памяти для быстрой перезагрузки, scene: createScene () удаляет эту память.

Итак, исправление, которое я обнаружил, состояло в том, чтобы вызвать scene:createScene(), похоже, это работает, но если это неправильный подход, пожалуйста, дайте нам знать.Спасибо.

Ответы [ 3 ]

1 голос
/ 14 января 2012

создайте «фиктивную сцену», где вы можете storyboard.purgeScene («level20») в createScene (), а затем создать функцию в enterScene (), которую вы можете storyboard.gotoScene («level20», «flip»).убедитесь, что у вас storyboard.purgeScene («фиктивная сцена») на «уровне» 20. Ваш следующий вопрос будет «Нужно ли мне создавать 20 фиктивных сцен?»Не храните переменную в storyboard.level = '20', чем вызывать ее из 'фиктивной сцены'

0 голосов
/ 03 мая 2013

Выше, кажется, не работает хорошо, я получил свое решение с простым эффектом перехода.

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
0 голосов
/ 23 декабря 2011

Я на самом деле не сделал это сам, но на основе обсуждения здесь:

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

Похоже, вам нужно позвонить storyboard.purgeScene("level20"), прежде чем звонить storyboard.gotoScene("level20","flip")

...