Function 使用函数(LUA、Corona)创建两个可触摸的对象
我认为这是一个真正的新手问题 但我有以下代码:Function 使用函数(LUA、Corona)创建两个可触摸的对象,function,lua,coronasdk,addeventlistener,Function,Lua,Coronasdk,Addeventlistener,我认为这是一个真正的新手问题 但我有以下代码: local function createCircle() [...] circle = display.newCircle( positionX, positionY, circleRadius ) [...] end function circle:touch( event ) if event.phase == "ended" then scaleCircle(self,scaleUp) end return
local function createCircle()
[...]
circle = display.newCircle( positionX, positionY, circleRadius )
[...]
end
function circle:touch( event )
if event.phase == "ended" then
scaleCircle(self,scaleUp)
end
return true;
end
circle:addEventListener("touch", circle)
我把它整理了一下,集中精力做重要的事情
我现在的问题是:我可以触摸一个圆并缩放它。但这只适用于其中一个圆(我想创建3或4个圆)。我猜它只适用于创建的最后一个圆
我想这里的主要问题是,我用“createCircle()”创建的所有圆都命名为“circle”。因此,evenListener只适用于我创建的“圆圈”
有没有办法选择我创建的其他圆圈
谢谢:)您必须使用表格。例如:
circles = {}
local function createCircle()
--[[ MORE CODE ]]--
table.insert( circles, display.newCircle( positionX, positionY, circleRadius ) )
--[[ MORE CODE ]]--
end
function circle:touch( event )
if event.phase == "ended" then
scaleCircle(self,scaleUp)
end
return true;
end
for _, circle in ipairs( circles ) do
circle:addEventListener("touch", circle)
end
我就是这样解决的:
local function createCircle()
--[[ MORE CODE ]]--
table.insert(circleTable, display.newCircle( positionX, positionY, circleRadius ) )
--[[ MORE CODE ]]--
end
function onObjectTouch(event)
local self = event.target
if event.phase == "ended" then
--[[ MORE CODE ]]--
end
return true;
end
local function addTouchListeners()
for _, circle in ipairs(circleTable) do
circle:addEventListener("touch", onObjectTouch)
end
end
createCircle()
addTouchListeners()
我想食梦者的解决方案也应该有效。但是我在调用createCircle()函数时又犯了一个错误。我通过为TouchListeners创建一个函数并在createCircle()函数之后调用它来解决这个问题
希望这能帮助其他有类似问题的人。谢谢你的回答。我会试试的。我读了一些关于桌子的教程。您的解决方案似乎是可行的,但我仍然有一个问题:“功能循环:触摸(事件)”给了我一个错误,因为“循环”并没有真正定义。我怎么能绕过它?我现在就这个问题编写了几个小时的代码:/to correct:“尝试索引全局‘圈’(一个零值)”是我收到的错误消息。