Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 如何在AS3中获得直线的两点?_Flash_Actionscript 3_Actionscript - Fatal编程技术网

Flash 如何在AS3中获得直线的两点?

Flash 如何在AS3中获得直线的两点?,flash,actionscript-3,actionscript,Flash,Actionscript 3,Actionscript,我有一个组件(链接到Testclass),其中包含一行,我把这行的一个点放在(0,0)上 然后将其拖动到Flash(fla),并在AS3中获得其形状,如: // in Test.as // assume that the movie clip only contain one line. var line:Shape = Shape(getChildAt(0)); 我可以得到这条线的一个点,它是varline的x和y。但是如何得到这条线的另一点呢 编辑: 忽略上面的组件内容,这里有另一个问题,

我有一个组件(链接到
Test
class),其中包含一行,我把这行的一个点放在(0,0)上

然后将其拖动到Flash(fla),并在AS3中获得其
形状,如:

// in Test.as
// assume that the movie clip only contain one line.
var line:Shape = Shape(getChildAt(0));
我可以得到这条线的一个点,它是var
line
x
y
。但是如何得到这条线的另一点呢

编辑: 忽略上面的组件内容,这里有另一个问题,但我猜它与上面的问题几乎相同:

在(0,0)到(10,10)之间画一条线,在(10,0)到(0,10)之间画另一条线,如何在AS3中得到这些两点形式的线


如果我以
Shape
的形式访问它们,那么我会得到两个相似的形状,它们具有相同的
x
y
width
height
值。AS3是否有办法将线作为一条真实的线而不仅仅是一个形状来访问?或者它有什么方法可以计算出来吗?

AS3中的Shape类不包含构成形状的点。相反,它是您可以创建的最基本的显示对象,具有图形对象(无鼠标事件调度,不能包含显示对象等)。它的名字常常给人留下更多的印象,但事实并非如此。绘制调用所表示的内容无法从形状中访问。。。或者通常从AS3中的任何显示对象


宽度和高度x和y只是显示对象的属性,它们基于显示对象的边界。如果要表示单个点,则必须创建自己的点结构,最终用于使绘制调用在以后可视化

如果最终存储点,然后让每个形状绘制它们,然后希望能够缩放或平移各个形状,并希望将点放置在局部形状以外的坐标空间中,则DisplayObject的localToGlobal和globalToLocal可能会对您有所帮助

var local:Point = new Point(10, 10);
var global:Point = someShape.localToGlobal(localPoint);
var inNewCoord:Point = parentContainer.globalToLocal(globalPoint)
如果你真的需要找到这个向量数据。。。您可能想签出此帖子:


然而,这涉及到实际解析swf的字节数据。

我最终找到了一种很好的方法来完成这项工作

我们开始:

  • 创建一个符号并从原点(0,0)到(x,0)绘制一条线
  • 将此符号链接到源代码,让我们调用
    Line
  • 将此符号拖动到舞台上,并旋转、缩放(如果需要)
  • 在代码
    行中

    var v:Point = new Point(getBounds(this).right, 0);
    v = localToGlobal(v);
    
    然后(x,y)和(v.x,v.y)可以表示这条线


  • 谢谢你指出这一点。我只是更新了我的问题,希望它比以前更清楚。:)“AS3是否有办法将线条作为真实的线条而不仅仅是形状来访问?”AS3中没有线条类。你想怎么处理这条线?改变它?移动它?这将帮助我们更好地理解正确的方法。我想使用一条线作为地图的路径,并将其放入链接到我的as类的组件中,这样我可以轻松地更改该路径的权重和类型,也可以轻松地更改其起点和终点。更多详细信息:我想使用一条线作为地图的路径,并将其放入一个链接到我的AS类的组件中,这样我就可以通过使用可检查标记轻松地更改该路径的权重和类型,也可以轻松地在Flash中更改其起点和终点。但是,在中访问起点和终点并不容易,因为这会造成很大的干扰,我必须使用一个额外的(可能无用的)属性“象限”来指出象限中的直线(假设其原点为0,0)。“如果你想表示单个点,你必须创建自己的点结构,最终用于绘制调用,并在以后将其可视化”这是我需要的部分内容,你能详细描述一下吗?我可以在Flash中绘制并仍然得到它的任何结构(表示为线)在AS3中,当你说在flash中绘制它时,你是指使用flash ide绘制工具吗?如果是这样,我很有信心你不会得到你想要的东西,即使你设法…你可能更容易制作一个swf,它允许你创建和删除要绘制的点,并以最方便的格式保存这些点。如果你需要这个工具要在编辑器中存在,您可以稍后将其制作成一个组件。我可以询问更多关于您试图实现的功能的信息吗?当然,我只想使用line作为具有一些“可检查”属性的组件。然后我可以使用它(和节点组件)在Flash中组装一个映射(CS4)对于AS3中的寻路。作为地图的路径数据,我需要以两点形式访问这些线。实际上,有一种肮脏的方法可以做到这一点,我(通过使用可检查标记)反射了一个象限属性,这样我就可以计算线的两点。但我觉得这有点尴尬。