adding listeners to spawned objects

This may have been asked before, but I have not been able to find an answer.

I am trying to assign event listeners to ‘enemies’ spawned using the following code. After the enemies are spawned with unique names, when I use those names corona terminal returns a nil value.

local enemy = {}
local enemies = 0

local function printName (event)
print (event.target.name)
end

local function spawnEnemyShip ()
enemies = enemies + 1
enemy[enemies]=display.newImage(“shipB.png”)
enemy[enemies].x = math.random(20,270)
enemy[enemies].y = -200
enemy[enemies].name = “enemyShip” … (enemies)
physics.addBody(enemy[enemies], “dynamic”, {density = math.random(0.1, 1000), bounce = 0})
enemy[enemies]:addEventListener(“collision”, printName)
return enemy
end

timer.performWithDelay(100, spawnEnemyShip, 5)

To make things a little more clear, after this function I would like to be able to write something like:

enemyShip1:addEventListener(“tap”, someFunction)

Thanks! [import]uid: 102017 topic_id: 17286 reply_id: 317286[/import]

Add this

enemy[enemies].collision = printName

before this

enemy[enemies]:addEventListener(“collision”, printName)

then change the above line to this

enemy[enemies]:addEventListener(“collision”, enemy[enemies]) [import]uid: 89724 topic_id: 17286 reply_id: 65335[/import]

Thanks for the assist, but perhaps I am doing something wrong.

Making the above changes, the terminal returns nil value for ‘target’ in the the ‘printName’ function.

If I can be more clear, let me know. [import]uid: 102017 topic_id: 17286 reply_id: 65781[/import]

local someTable = {}
local i = 0

local function foo(event)
if event.phase == “ended” then
print(event.target.name)
end
end
this works perfectly, i put there an example of how to attach another listener to target, or you can use any other means, but to attach another listener you first must create this object, so simply writing :addEventListener outside of function will gain you nothing

[lua]local someTable = {}
local i = 0

local function foo(event)
if event.phase == “ended” then
print(event.target.name)
end
if event.target.name == “name is: 3” then
event.target:removeEventListener(“touch”, foo)
print(“you can add another listener here now”)
end
end

local function spawn_something()
i=i+1
someTable[i] = display.newRect(0,0,50,50)
someTable[i].x = math.random(50,400)
someTable[i].y = math.random(50,400)
someTable[i].name = "name is: "…i
someTable[i]:addEventListener(“touch”, foo)

for i,v in pairs(someTable) do
print(i,v)
end
end
timer.performWithDelay(500, spawn_something, 5)[/lua]
[import]uid: 16142 topic_id: 17286 reply_id: 65782[/import]

Thank you very much. This works perfectly!
[import]uid: 102017 topic_id: 17286 reply_id: 65789[/import]