Я хочу включить в свою игру кнопку паузы, которая включает в себя физику объектов и некоторые переходы. Как я могу сделать это в Corona SDK, в котором я новичок? Любое руководство??
Как мне правильно приостановить игру, включающую физику и переходы?
Ответы (4)
function pause()
physics.pause()
end
Runtime:addEventListener("touch", pause)
приостановит всю физику.
function pause(event)
if event.phase == "began" then
if paused == false then
physics.pause()
paused = true
elseif paused == true then
physics.start()
paused = false
end
end
end
paused = false
Runtime:addEventListener("touch", pause)
будет переключать физику на паузу при нажатии
person
Community
schedule
30.08.2011
Помимо остановки физики, вы также должны удалить прослушиватели enterframe, если у вас есть объекты, которые движутся вместе со сценой, и любую анимацию, которая есть в игре.
Таким образом, ваша функция паузы будет такой
function Pause(event)
if event.phase == "began" then
if paused == false then
physics.pause()
paused = true
Runtime:removeEventListener("enterFrame",Contador_func)
Runtime:removeEventListener("enterFrame",Move_c1ScrollPai)
Runtime:removeEventListener("enterFrame",Move_c1ScrollFilho)
Runtime:removeEventListener("enterFrame",VelAumenta)
Runtime:removeEventListener("enterFrame",Serra)
Runtime:removeEventListener("enterFrame",passaro)
Runtime:removeEventListener("enterFrame",bf)
Runtime:removeEventListener("enterFrame",bf2)
Runtime:removeEventListener("enterFrame",p)
Runtime:removeEventListener("enterFrame",CR)
Runtime:removeEventListener("enterFrame",Funcao)
Runtime:removeEventListener("enterFrame",BumPassaro)
Runtime:removeEventListener("collision",Andar)
p:pause()
Bum:pause()
coin:pause()
coins:pause()
elseif paused == true then
Runtime:addEventListener("enterFrame",Contador_func)
Runtime:addEventListener("enterFrame",Move_c1ScrollPai)
Runtime:addEventListener("enterFrame",Move_c1ScrollFilho)
Runtime:addEventListener("enterFrame",VelAumenta)
Runtime:addEventListener("enterFrame",Serra)
Runtime:addEventListener("enterFrame",passaro)
Runtime:addEventListener("enterFrame",bf)
Runtime:addEventListener("enterFrame",bf2)
Runtime:addEventListener("enterFrame",p)
Runtime:addEventListener("enterFrame",CR)
Runtime:addEventListener("enterFrame",Funcao)
Runtime:addEventListener("enterFrame",BumPassaro)
Runtime:addEventListener("collision",Andar)
Runtime:removeEventListener("enterFrame",p)
p:play()
Bum:play()
coin:play()
coins:play()
physics.start()
paused = false
end
end
end
person
Talles Rodrigues
schedule
02.03.2015
При использовании physics.pause() в физическом объекте будет небольшое дрожание.
Другой способ — сделать снимок экрана во время паузы и поместить его поверх сцены.
После этого вы помещаете поверх экрана приостановленные объекты графического интерфейса экрана.
Удалите приостановленные объекты экрана и снимок экрана при возобновлении.
local gameScene= display.newGroup()
local myObject1 = display.newRect(50,50,100,150 )
gameScene:insert(myObject1)
function onPause(event)
local screenCap = display.captureScreen(false) --dont save to album
gameScene:insert(screenCap)
--insert pause buttons and etc here
end
Runtime:addEventListener("touch",onPause)
person
cctan
schedule
16.01.2012
Используйте кнопку паузы, чтобы установить функцию:
local function pausebtn(event)
if event.phase == "ended" then
physics.pause()
end
pausebtn:addEventListener("touch", pausebtn)
person
Malarkodi
schedule
02.05.2012