If tool and targ have the same parent, then a simple assignment of the x,y 
should be good enough, assuming that both are drawing into positive coordinates 
only.  If you've got something drawing into negative coordinates because it is 
centering and rotation, then you need more calculations.

If their parents are different, and it sound like they are, then if targ is 
from a mouseEvent, the mouseEvent's stageX/Y should be good enough to back 
calculate using globalToLocal.  Note that for a mouseEvent, the event.target 
could be a sub-component and thus not have the same parent as the other.

Alex Harui
Flex SDK Developer
Adobe Systems Inc.<http://www.adobe.com/>
Blog: http://blogs.adobe.com/aharui

From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf 
Of flexaustin
Sent: Saturday, September 19, 2009 2:27 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] x and y localToGlobal



Can anyone tell me if any of these are correct? I am using Senocular 
TransformTool (e.g. 
http://www.sephiroth.it/weblog/archives/2007/07/transformtool_modification.php) 
I have a Flex that has the following layers:

Flex Project Layers (top to bottom):
-Application
--main sprite
---visualization sprite
----holder layer - where TARG and TOOL are located.

What I need is for TOOL's X & Y to be TARG's X & Y at all times. So if I drag 
TARG then TOOL needs to stay with it in the same spot (And no I can't put TOOL 
inside TARG). So I tried the following which doesn't work:

tool.x = targ.x; (in debug it shows this before assignment tool.x=289 and 
targ.x=0)
tool.y = targ.y; (in debug it shows this before assignment tool.y=200 and 
targ.y=0)

So, I tried each of the following (substituting in each var), but none of which 
works.
tool.x = gtlpt.x;
tool.y = gtlpt.y;

var gtlpt:Point = tool.globalToLocal( new Point( targ.x, targ.y ) );
var ltgpt:Point = tool.localToGlobal( new Point( targ.x, targ.y ) );

var toolgtlpt:Point = targ.globalToLocal( new Point( tool.x, tool.y ) );
var toolltgpt:Point = targ.localToGlobal( new Point( tool.x, tool.y ) );

var mgtlpt:Point = _vis.marks.globalToLocal( new Point( tool.x, tool.y ) );
var mltgpt:Point = _vis.marks.localToGlobal( new Point( tool.x, tool.y ) );

var mmgtlpt:Point = _vis.marks.globalToLocal( new Point( targ.x, targ.y ) );
var mmltgpt:Point = _vis.marks.localToGlobal( new Point( targ.x, targ.y ) );



Reply via email to