Give this a try:
[html]
main-1.lua
local arguments =
{
{ x=50, y=10, w=100, h=100, r=10, red=255, green=0, blue=128 },
{ x=10, y=50, w=100, h=100, r=10, red=0, green=128, blue=255 },
{ x=90, y=90, w=100, h=100, r=10, red=255, green=255, blue=0 }
}
local function printTouch( event )
if ( event.target ~= nil ) then
local bounds = event.target.stageBounds
print( "event(" .. event.phase .. ") ("..event.x..","..event.y..") bounds: "..bounds.xMin..","..bounds.yMin..","..bounds.xMax..","..bounds.yMax )
end
end
local function onTouch( event )
local t = event.target
local phase = event.phase
if "began" == phase then
-- Make target the top-most object
local parent = t.parent
parent:insert( t )
display.getCurrentStage():setFocus( t )
-- Spurious events can be sent to the target, e.g. the user presses
-- elsewhere on the screen and then moves the finger over the target.
-- To prevent this, we add this flag. Only when it's true will "move"
-- events be sent to the target.
t.isFocus = true
-- Store initial position
t.x0 = event.x - t.x
t.y0 = event.y - t.y
elseif t.isFocus then
if "moved" == phase then
-- Make object move (subtract t.x0,t.y0 so that moves are
-- relative to initial grab point).
t.x = event.x - t.x0
t.y = event.y - t.y0
printTouch(event)
elseif "ended" == phase or "cancelled" == phase then
display.getCurrentStage():setFocus( nil )
t.isFocus = false
end
end
-- Important to return true. This tells the system that the event
-- should not be propagated to listeners of any objects underneath.
return true
end
-- Iterate through arguments array and create rounded rects for each item
for \_,item in ipairs( arguments ) do
local button = display.newRoundedRect( item.x, item.y, item.w, item.h, item.r )
button:setFillColor( item.red, item.green, item.blue )
button.strokeWidth = 6
button:setStrokeColor( 200,200,200,255 )
-- Make the button instance respond to touch events
button:addEventListener( "touch", onTouch )
end
Runtime:addEventListener( "touch", printTouch )
[/html] [import]uid: 5 topic_id: 138 reply_id: 343[/import]