每个订阅的图片都会触发 EventListener,而不仅仅是一个。

我动态创建了图片并给它们分配事件监听器,当我点击图片时,所有图片的事件都会触发,而不仅仅是我点击的那一个。

我希望它只触发一次,那么我错在哪了呢?

  math.randomseed(os.time())

  for i = 1,20 do
    addImage(i)
  end

function addImage(index)

  local image = display.newImage("image.png", 10, 10)
  image:addEventListener('tap', action)

end

function action(event)

  local image = event.target

end
点赞
用户3440167
用户3440167

看起来你把图片一个接一个地放,所以当你点击顶部的一张图片时,实际上你点击了它们所有的图片。 然后“Tap”监听器会依次调用。 在Corona中,为了防止事件穿透,监听器必须返回“true”。

function action(event)
    local image = event.target
    ...
    return true --防止传播到底层tap对象
end

你可以在这里了解更多: https://coronalabs.com/blog/2013/10/01/tutorial-taptouch-anatomy/

2015-05-03 13:52:16