我是Corona SDK的初学者。 我有2个场景A&乙
在场景A中,我有一个带有OnRelease事件的按钮。 此按钮已创建并添加到场景Create事件中的组中。 单击该按钮将我带到场景B(storyboard.gotoScene(“B”))。
在场景B中,我在盒子上有一个触摸事件(板条箱图像)。 触摸侦听器添加在场景已启动事件中,并在场景退出事件中删除。 点击箱子将我带回A(storyboard.gotoScene(“A”))。
所以这是真正讨厌的问题: 返回A后,此场景中的所有事件现在都被禁用。 即我不能再点击按钮(无事件)。
如果我缺少上述信息,将提供代码段。 谢谢。
*更新*
在休息了一段时间后,我今天回去了,又开始调试了。我很快就找到了这个问题。这个问题与我触摸的事件处理程序有关(导致从场景B到A的转换)。
下面的片段导致了这个问题:
function testTouched( event )
-- process cue-touched event...
--local t = event.target -- commenting this was the fix.
local phase = event.phase
if "began" == phase then
print(" -> back to menu")
--display.getCurrentStage():setFocus( t ) -- commenting this was the fix.
--t.isFocus = true -- commenting this was the fix.
storyboard.gotoScene( "menu", "flipFadeOutIn", 500 )
end
-- Stop further propagation of touch event
return true
答案 0 :(得分:0)
从我看到here,
enterScene
在调用storyboard.gotoScene()之后立即调度 过渡已经完成。所以,如果你指定了过渡效果, 效果结束后立即调度此事件。添加 应将侦听器或app / game特定逻辑放在侦听器中 这个事件的功能。
exitScene
当调用storyboard.gotoScene()时,将出现“exitScene”事件 在转换发生之前调度到当前显示的场景。 清除职责,例如删除事件监听器,停止计时器, 应该放在此事件的监听器函数中。
在enterScene()
事件而不是createScene()
中添加事件侦听器,并在exitScene()
删除它们?
修改:我认为您需要display.getCurrentStage():setFocus(nil)
中的exitScene()
。