Flash AS3在具有不同父项的两个对象之间绘制一条线

时间:2013-05-13 00:38:33

标签: actionscript-3 flash actionscript

所以我有两个父母不同的对象,我想在它们之间画一条线,我该怎么做?我知道我需要使用localToGlobal,但我不确定如何让它适用于此。基本上我需要两个对象相对于其中一个的x和y坐标,当他们有不同的父母时,如何获得对象相对于另一个的x和y坐标?感谢。

3 个答案:

答案 0 :(得分:3)

从概念上讲,你基本上需要这样做(绘制破折号,但是作为实线)

parent
|      \
child1--child2

[一些代码(键入但未测试)]

var start:Point = parent.globalToLocal(child1.localToGlobal(new Point()));
var end:Point = parent.globalToLocal(child2.localToGlobal(new Point()));
parent.graphics.lineStyle(1);
parent.graphics.moveTo(child1.x,child1.y);
parent.graphics.lineTo(child2.x,child2.y);

[另一种选择]

var start:Point = child1.getRect(parent).topLeft;
var end:Point = child2.getRect(parent).topLeft;
parent.graphics.lineStyle(1);
parent.graphics.moveTo(child1.x,child1.y);
parent.graphics.lineTo(child2.x,child2.y);

http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001308.html http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001320.html

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#localToGlobal() http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#globalToLocal()

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#getRect()

答案 1 :(得分:0)

它是:

var object1Pos:Point = object1.localToGlobal(new Point());
var object2Pos:Point = object2.localToGlobal(new Point());

现在你必须画线

var line:Shape = new Shape();
var g:Graphics = line.graphics;
g.lineStyle(2, 0x000000);
g.moveTo(object1Pos.x, object1Pos.y);
g.lineTo(object2Pos.x, object2Pos.y);

然后,当然,将该行添加到舞台

stage.addChild(line);

答案 2 :(得分:0)

你可以得到孩子孩子的任何孩子的绝对坐标(实际上,它相对于舞台)...并且只是在他们之间画画,在舞台上:)这样一来,重要的不是两者有多深孩子们。