Reputation: 306
I gues this is a real newbie question,
but I have the following code:
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)
I cleaned it up a bit, to concentrate on the important things.
My problem right now is: I can touch one circle and scale it. But this works only for one of the circles (I want to create like 3 or 4 of them). And I guess it only works for the last circle which was created.
I guess the main problem here is, that all circles I create with "createCircle()" are named "circle". So the evenListener only works for the "circle" I created.
Any ideas how I can select the other circles I created?
thank you :)
Upvotes: 3
Views: 392
Reputation: 306
This is how I solved it:
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()
I guess Dream Eaters solution should work as well. But I had another mistake in calling my createCircle() function. I solved this with creating a function for the TouchListeners and call it AFTER the createCircle() function.
Hope this helps other people with similar problems.
Upvotes: 1
Reputation: 80639
You MUST use tables. For eg.:
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
Upvotes: 1