Hi I was wondering if anyone has had any experience with dragging objects inside scaled groups? I have tried searching the forums and APIs and so on and have had no luck. What happens is that when you drag an object inside a scaled group it gradually moves away from the touch event. Here is some code, its a broken down version of the drag Platforms example.
[lua]–
– Abstract: DragPlatforms sample project
– Demonstrates one method for draggable physics objects
– Version: 1.1 (revised for Alpha 2)
– Sample code is MIT licensed, see http://developer.anscamobile.com/code/license
– Copyright © 2010 ANSCA Inc. All Rights Reserved.
local physics = require(“physics”)
physics.start()
display.setStatusBar( display.HiddenStatusBar )
local gameGroup = display.newGroup()
gameGroup.xScale = .65
gameGroup.yScale = .65
– A basic function for dragging physics objects
local function startDrag( event )
local t = event.target
local phase = event.phase
if “began” == phase then
display.getCurrentStage():setFocus( t )
t.isFocus = true
– Store initial position
t.x0 = event.x - t.x
t.y0 = event.y - t.y
– Make body type temporarily “kinematic” (to avoid gravitional forces)
event.target.bodyType = “kinematic”
– Stop current motion, if any
event.target:setLinearVelocity( 0, 0 )
event.target.angularVelocity = 0
elseif t.isFocus then
if “moved” == phase then
t.x = event.x - t.x0
t.y = event.y - t.y0
elseif “ended” == phase or “cancelled” == phase then
display.getCurrentStage():setFocus( nil )
t.isFocus = false
– Switch body type back to “dynamic”, unless we’ve marked this sprite as a platform
if ( not event.target.isPlatform ) then
event.target.bodyType = “dynamic”
end
end
end
– Stop further propagation of touch event!
return true
end
local ground = display.newRect( 0,500,1000,10 )
ground:setFillColor(140, 140, 255)
physics.addBody( ground, “static”, { friction=0.6 } )
gameGroup:insert(ground)
local block = display.newRect( 50,50,50,50 )
block:setFillColor(140, 140, 255)
physics.addBody( block, { density=1.0, bounce=0.4 } )
gameGroup:insert(block)
– Add touch event listeners to objects
block:addEventListener( “touch”, startDrag )[/lua]
Thanks, JM [import]uid: 39088 topic_id: 10412 reply_id: 310412[/import]