Q:

EventListener firing for every image subscribed instead of just the one? 

I am dynamically creating images and assigning them an event listener, when I tap the image the event for all images fire, instead of just the one I tapped. 
I would expect it just to fire the once so where have I gone wrong? 
  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

A:

It looks like you are placing the images one on top of the others, so when you tap the top one, you are actually tapping all of them.  
The "Tap" listeners are then called one right after the other. 
In corona, to stop an event from seeping through, the listener must return "true". 
function action(event)
    local image = event.target
    ...
    return true --prevent propagation to underlying tap objects
end

you can read more here:
https://coronalabs.com/blog/2013/10/01/tutorial-taptouch-anatomy/

