我使用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.
}
}
答案 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立即将其呈现为位图...