2015-09-10 1 views
-1

Что не так с этим кодом, что он сбой симулятора? Я новичок в Corona SDK, но я знаю много Lua от Roblox.Corona SDK В то время как петлевая авария

local x,y,touching,active = 2,2,false,true 
local background = display.newImage("Icon.png",(display.pixelWidth/2)+30,y) 
background:scale(60,60) 
print("Started") 

function move() 
    y=y+1 
end 

function onObjectTouch(event) 
    if event.phase == "began" then 
     touching = true 
     while touching == true do 
      timer.performWithDelay(1000, move) 
     end 
    elseif event.phase == "ended" then 
     touching = false 
    end 
    return true 
end 

background:addEventListener("touch",onObjectTouch) 

ответ

0

Corona - это событие основано. Вы по существу запираете событие касания в цикле while, которое предотвращает запуск фазы, чтобы прервать ваш бесконечный цикл.

У Corona есть событие Runtime под названием «enterframe». Он называется 30-60 раз в секунду (возможно, меньше в зависимости от выполняемой работы), который по существу является методом обновления.

Используя вашу логику:

function onObjectTouch(event) 
    if event.phase == "began" then 
     touching = true   
    elseif event.phase == "ended" then 
     touching = false 
    end 
end 

funtion EnterFrame(event) 
    if touching == true then 
      timer.performWithDelay(1000, move) 
    end 
end 

Есть другие способы, чтобы выполнить эту задачу путем установки динамической скорости объектов при запуске прикосновения и настроек, что скорость до 0, когда прикосновение заканчивается.