Перезагрузка экрана в короне - PullRequest
7 голосов
/ 01 ноября 2011

Я разрабатываю приложение в короне, где мне нужно перезагружать один и тот же экран снова и снова. Я понятия не имею, как это сделать. Может кто-нибудь объяснить мне это с помощью кода

Ответы [ 7 ]

3 голосов
/ 02 ноября 2011

1) директор класса

2) main.lua

display.setStatusBar (display.HiddenStatusBar)
--> Hides the status bar

local director = require ("director")
--> Imports director

local mainGroup = display.newGroup()
--> Creates a main group

local function main()
--> Adds main function

    mainGroup:insert(director.directorView)
    --> Adds the group from director

    director:changeScene("myscene")
    --> Change the scene, no effects

    return true
end

main()

3) myscene.lua

module(..., package.seeall)

function new()
    local localGroup = display.newGroup()

    local redbutton = display.newImage ("redbutton.png")
    redbutton.x = 160
    redbutton.y = 100
    localGroup:insert(redbutton)

    local function pressRed (event)
        if event.phase == "ended" then
            director:changeScene ("reloader")
        end
    end

    redbutton:addEventListener ("touch", pressRed)

    return localGroup
end

4) reloader.lua

module(..., package.seeall)

function new()
    local localGroup = display.newGroup()

        local function listener( event )
            director:changeScene ("myscene", "fade")
        end

        timer.performWithDelay(50, listener )

        return localGroup
end
1 голос
/ 20 июля 2012

Не знаю точно, но в моей игре я использую тот же файл lua для changeScene.

myscene.lua

Режиссер: changeScene ( "myscene")

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

API раскадровки доступен с версии 2011.678

Вот пример использования API раскадровки с использованием сборки 2011.704

каждое прикосновение перезагрузит всю сцену

--main.lua
module(...,package.seeall)
local storyboard=require("storyboard")
local scene=storyboard.newScene()
scene.name="scnMenu"

function scene:createScene(event)
    local group=self.view
    bg=display.newRect(0,0,100,100)
    group:insert(bg)
end


function scene:enterScene(event)
    Runtime:addEventListener("touch",onTouch) 
end

function onTouch(event)
    storyboard.gotoScene("main","fade",1000)
end

function scene:exitScene(event)
    Runtime:removeEventListener("touch",onTouch)
end

function scene:destroyScene(event)
end

scene:addEventListener("createScene",scene)
scene:addEventListener("enterScene",scene)
scene:addEventListener("exitScene",scene)
scene:addEventListener("destroyScene",scene)

return scene
0 голосов
/ 02 августа 2016

Вы можете создать сцену перезагрузки, И называй это Roload Any Scene. Как это

composer.gotoScene("Scene.Reload" , 
    {
        params = 
        {
            reloadSceneOptions = 
            {
                effect = "slideLeft",
                time = 500,
            },
            reloadSceneName = SceneName
        }
    })

И Ваш Код Сцены Перезарядки как

elseif phase == "did" then
    local reloadSceneOptions = event.params.reloadSceneOptions
    local reloadSceneName = event.params.reloadSceneName

    composer.removeScene( reloadSceneName )
    composer.gotoScene( reloadSceneName , reloadSceneOptions )
end 
0 голосов
/ 11 марта 2014

Вы также можете перезагрузить тот же экран с помощью этого метода: timer.performWithDelay (500, директор функции (): changeScene («имя вашей сцены»)); Но перед вызовом вышеупомянутой функции вам необходимо удалить все объекты из группы отображения.

0 голосов
/ 09 января 2014

Я думаю, вам следует выполнить следующие шаги: которые я реализовал для перезагрузки / перезапуска сцены раскадровки в короне.

Шаг 1: Создайте функцию или строку кода для перезапуска / перезагрузкиснова и снова та же сцена из класса раскадровки, из которого вы хотите перезагрузить или перезапустить.

function forRestart(event)

if(event.phase == "ended") then

   local current_scene_name = storyboard.getCurrentSceneName()
   **storyboard.gotoScene( "reload", "fade", 250 )**

return true;
end

Шаг 2. Создайте файл lua с именованной перезагрузкой.Ниже приведен шаблон для файла reload.lua.

local storyboard = require( "storyboard" )
local scene = storyboard.newScene()

-- Called when the scene's view does not exist:
function scene:createScene( event )
    local group = self.view

end

- Вызывается сразу после перемещения сцены на экране:

function scene:enterScene( event )
    local group = self.view
    --purge level
    local previous_scene_name = storyboard.getPrevious()
    print("previous",previous_scene_name)
    --storyboard.removeScene(previous_scene_name)
    storyboard.purgeScene( previous_scene_name )
    --go back to level, by loading it from scratch
    storyboard.gotoScene( previous_scene_name, "fade", 250 )
end

- Вызывается, когда сцена собирается двигатьсяoffscreen:

function scene:exitScene( event )
    local group = self.view
end

- Если вид сцены удален, scene: destroyScene () будет вызвана непосредственно перед:

 function scene:destroyScene( event )
        local group = self.view
    end


-- "createScene" event is dispatched if scene's view does not exist

    scene:addEventListener( "createScene", scene )


-- "enterScene" event is dispatched whenever scene transition has finished

    scene:addEventListener( "enterScene", scene )


-- "exitScene" event is dispatched whenever before next scene's transition begins
scene:addEventListener( "exitScene", scene )

-- "destroyScene" event is dispatched before view is unloaded, which can be
-- automatically unloaded in low memory situations, or explicitly via a call to
-- storyboard.purgeScene() or storyboard.removeScene().
scene:addEventListener( "destroyScene", scene )

return scene
0 голосов
/ 04 апреля 2013

Я попробовал другой метод, который работал для меня, пример приведен ниже -

Шаг 1 - создайте объект, подобный - local reloadScene

Шаг 2 - применить шаг 2, когда требуется перезагрузить сцену - reloadScene = "ДА" storyboard.reloadScene ( "eventsButtonClicked")

Шаг 3 - применить шаг 3, когда нет необходимости перезагружать сцену - функция scene2a: exitScene (событие) если reloadScene == "ДА", то storyboard.purgeScene ( "eventsButtonClicked") reloadScene = "НЕТ" конец конец scene2a: addEventListener ("exitScene", scene2a)

...