3

我想这是一个真正的新手问题,

但我有以下代码:

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()”创建的所有圆圈都被命名为“圆圈”。所以 evenListener 只适用于我创建的“圈子”。

有什么想法可以选择我创建的其他圈子吗?

谢谢你 :)

4

2 回答 2

1

必须使用表格。例如:

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
于 2013-02-25T16:00:03.223 回答
1

这就是我解决它的方法:

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()

我想 Dream Eaters 解决方案也应该有效。但是我在调​​用我的 createCircle() 函数时又犯了一个错误。我通过为 TouchListeners 创建一个函数并在 createCircle() 函数之后调用它来解决这个问题。

希望这可以帮助其他有类似问题的人。

于 2013-02-26T18:06:19.727 回答