如何获得在flash as3中用lineTo绘制的直线的终点

时间:2011-05-10 14:15:17

标签: flash actionscript-3 graphics

我使用flash的graphics.lineTo命令绘制了一系列行,并将它们放在一个稍后要引用的数组中。根据某些用户交互,保持这些线条的剪辑可以向右移动,导致线条随之移动,不再连接到它们最初连接的点。所以我需要按照父剪辑的移动量来扩展行(我称之为incVal)。所以我需要做的是找到每条线结束的点,并通过incVal从该点向左绘制。如何获得该行的终点?

这是我的代码:

绘制线条并将其添加到剪辑和数组以供将来参考:

line.graphics.lineTo(localPoint.x,localPoint.y-10);
membersRef.addChild(line);
parallelArr.push(line);

稍后通过循环遍历数组来引用该行:

function extendParallels(incVal):void {
    for (var i=0;i<parallelArr.length;i++){
        trace (parallelArr[i]);
//need to extend line with code here.
    }
}

2 个答案:

答案 0 :(得分:2)

您无法通过简单的方式从精灵中获取图形端点。您应该考虑将结束点保存在变量中。

var p:Point = new Point(localPoint.x, localPoint.y-10); // flash.geom.Point

parallelArr中,您可以保存一个对象,该对象包含对此点的引用以及用于绘制线条的DisplayObject。

答案 1 :(得分:1)

稍微改变你的逻辑,你就会被设定。在parallelArr数组中存储一个点,以供稍后参考。

有点像:

            //during dynaminc population
            addLine(localPoint.x, localPoint.y);

            private function addLine(pX:int, pY:int):void
            {
                var nPoint:Point = new Point(pX, pY);
                line.graphics.lineTo(nPoint.x, nPoint.y-10);
                membersRef.addChild(line);
                parallelArr.push(nPoint);
            }

这使您可以访问创建该行的状态,并避免尝试从行本身收集它。如果您将任何过滤器应用于该行,这将特别复杂,因为Flash立即将其呈现为位图...