Hey JayantV, here is the version of the code that does not have your adjustment installed. I just wanted you to see it. If you copied pasted you would be able to observe my problem - namely, clicking and dragging on the tail object then releasing brings up the “backButton” object, correctly, but clicking off of the “tail” object, then releasing when the object moves under the cursor, also brings up the “backButton” object.
I have also pasted in the version with your code after this, but I am getting an error: attempt to index global ‘target’ (a nil value), so I suspect I am not putting your code in properly.
[lua]display.setStatusBar(display.HiddenStatusBar)
– the tail –
local tail = display.newRect(0, 0, 20, 20)
tail.x = math.random( 21, 300)
tail.y = math.random( 21, 460)
local xPosTail,yPosTail = math.random( 40, 280),math.random( 20, 460)
tailSpeedX = .4
tailSpeedY = .4
– BOUNCE the tail around –
local function onMoveTail(event)
xPosTail = xPosTail + ( 2.8 * tailSpeedX );
yPosTail = yPosTail + ( 2.2 * tailSpeedY );
if (xPosTail > display.contentWidth - 20 or xPosTail < 20) then
tailSpeedX = tailSpeedX * -1;
end
if (yPosTail > display.contentHeight - 20 or yPosTail < 20) then
tailSpeedY = tailSpeedY * -1;
end
tail:translate( xPosTail - tail.x, yPosTail - tail.y)
end
– DRAG THE TAIL
function tail:touch( event )
if event.phase == “began” then
tail.x =event.x
tail.y = event.y
self.markX = self.x – store x location of tail
self.markY = self.y – store y location of tail
display.getCurrentStage():setFocus(event.target)
Runtime:removeEventListener(“enterFrame”, onMoveTail)
elseif event.phase == “moved” then
local x = (event.x - event.xStart) + self.markX
local y = (event.y - event.yStart) + self.markY
self.x, self.y = x, y
elseif event.phase == “ended” then
local backButton = display.newRect(0, 0, 80, 80)
backButton.x = 160
backButton.y = 455
tail:removeEventListener( “touch”, tail )
display.getCurrentStage():setFocus(tail, nil)
end
return true
end
– listeners –
tail:addEventListener( “touch”, tail )
Runtime:addEventListener(“enterFrame”, onMoveTail)[/lua]
And here is the version with your code, so kindly provided:
[lua]display.setStatusBar(display.HiddenStatusBar)
– the tail –
local tail = display.newRect(0, 0, 20, 20)
tail.x = math.random( 21, 300)
tail.y = math.random( 21, 460)
local xPosTail,yPosTail = math.random( 40, 280),math.random( 20, 460)
tailSpeedX = .4
tailSpeedY = .4
– BOUNCE the tail around –
local function onMoveTail(event)
xPosTail = xPosTail + ( 2.8 * tailSpeedX );
yPosTail = yPosTail + ( 2.2 * tailSpeedY );
if (xPosTail > display.contentWidth - 20 or xPosTail < 20) then
tailSpeedX = tailSpeedX * -1;
end
if (yPosTail > display.contentHeight - 20 or yPosTail < 20) then
tailSpeedY = tailSpeedY * -1;
end
tail:translate( xPosTail - tail.x, yPosTail - tail.y)
end
– DRAG THE TAIL
function tail:touch( event )
if event.phase == “began” then
display.currentStage:setFocus(target)
target.setFocus=true
tail.x =event.x
tail.y = event.y
self.markX = self.x – store x location of tail
self.markY = self.y – store y location of tail
Runtime:removeEventListener(“enterFrame”, onMoveTail)
elseif event.phase == “moved” and target.setFocus then
local x = (event.x - event.xStart) + self.markX
local y = (event.y - event.yStart) + self.markY
self.x, self.y = x, y
elseif event.phase == “ended” then
display.currentStage:setFocus(nil)
target.setFocus = false
local backButton = display.newRect(0, 0, 80, 80)
backButton.x = 160
backButton.y = 455
tail:removeEventListener( “touch”, tail )
end
return true
end
– listeners –
tail:addEventListener( “touch”, tail )
Runtime:addEventListener(“enterFrame”, onMoveTail)[/lua]
[import]uid: 96383 topic_id: 17077 reply_id: 64195[/import]