Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 使用函数(LUA、Corona)创建两个可触摸的对象_Function_Lua_Coronasdk_Addeventlistener - Fatal编程技术网

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:“尝试索引全局‘圈’(一个零值)”是我收到的错误消息。