使用Corona SDK编写游戏时遇到问题。我有不同的对象(存储在表中)掉下来和一个“触摸”事件监听器来定义触摸对象时要做什么。 但是我还想在一个对象在落在屏幕下方之后没有被触摸时定义动作。我尝试了几种方法,每一种方法都“正常”(没有生成错误),但是没有执行定义的操作...... 有没有办法定义一种“非触摸事件listerner”? 这是我的代码中的listerner部分(在此示例中,代码正在运行但“Game Over”未打印)。
非常感谢你的帮助!
local function BlackBalloon ()
local Black = display.newImageRect("BlackBallon.png", 80, 120)
function Black:touch (event)
if event.phase == "began" then
score = score + 1
print ( score )
elseif Black.y >= 540 then
print ( "Game Over" )
end
return true
end
Black:addEventListener( "touch", Black )
return Black
end
答案 0 :(得分:1)
没有"纯度"检查对象。您可以通过在创建对象Black.touched = false
时创建一个变量并在触摸后将其更改为true
来模拟此情况。
我将为您提供实现此功能的基本功能 - 当您检测到触摸时,您必须在 Black对象上添加变量,并设置变量ex。 Black.touched = true
并在gameOverDetection
函数中检查该变量。
在您的代码中添加此功能。
-- Function to handle detection.
local function gameOverDetection()
if Black.y > 540 then
print ("Game Over")
end
end
在代码底部添加此侦听器
-- Listener to check on each entered frame.
Runtime:addEventListener("enterFrame",gameOverDetection)
要解释为什么您自己的代码无法正常工作,只有在对象上发生触摸事件时才会调用函数Black:touch(event)
。所以行动方针是
你永远不会遇到触及满足第二个条件>= 540
的物体而第二个条件只有在你保持"持有时才会遇到的情况。你的手指放在一个物体上。