【发布时间】:2011-07-28 06:53:59
【问题描述】:
我想在我的游戏中加入一个暂停按钮,该按钮涉及对象的物理特性和一些过渡。我怎么能在我相当新的 Corona SDK 中做到这一点? 有什么指导吗??
【问题讨论】:
标签: lua coronasdk game-physics
我想在我的游戏中加入一个暂停按钮,该按钮涉及对象的物理特性和一些过渡。我怎么能在我相当新的 Corona SDK 中做到这一点? 有什么指导吗??
【问题讨论】:
标签: lua coronasdk game-physics
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)
将在点击时切换物理暂停
【讨论】:
除了停止物理之外,如果您有随场景移动的对象以及游戏中的任何动画,您还必须移除 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
【讨论】:
使用physics.pause(),物理对象会有轻微的抖动。
另一种方法是在暂停时捕获屏幕并将其放在场景上。
之后,您将暂停的屏幕 GUI 对象放在屏幕顶部。
恢复时删除暂停的屏幕对象和屏幕截图。
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)
【讨论】:
使用暂停键设置功能:
local function pausebtn(event)
if event.phase == "ended" then
physics.pause()
end
pausebtn:addEventListener("touch", pausebtn)
【讨论】: