actionscript-3 - 在 ActionScript 3 中从一组坐标对创建多边形

标签 actionscript-3

我正在 Flash 中制作一个应用程序,我想定义一些多边形,我可以将悬停事件绑定(bind)到这些多边形以向图像添加注释。 我可以在 Flash 中正常创建这些,但我想加载一些外部数据、坐标列表,并使用 ActionScript 创建多边形。

显然它们只是热点,所以我希望它们不可见,但搜索我的问题仅显示使用 graphics 从坐标绘制多边形的结果movieclip 的属性.

数据永远不会改变,因此可以使用钢笔工具手动绘制所有多边形,但数据正在其他地方使用,因此如果我可以添加新区域,维护会容易得多只需更新文本文件即可。

最佳答案

var pointsRawXML:String = '<mypoints>\n<point x="100", y="100 />\n<point x="100", y="0 />\n<point x="0", y="0 />\n<point x="0", y="100 />\n</mypoints>';

会给你:

<mypoints>
    <point x="100", y="100 />
    <point x="100", y="0 />
    <point x="0", y="0 />
    <point x="0", y="100 />
</mypoints>

然后加载并解析它:

var points:XML = new XML(pointsRawXML);

var pointsXMLNodeList:XMLList = points.children();

var i:uint = 0;

var pointsVector<Point> polygonPoints = new Vector<Point>();

for(i = 0; i < pointsXMLNodeList.lenght(); ++i) {
    var tmpXML:XML = XML(pointsXMLNodeList[i]);
    var pX:Number = tmpXML.attribute("x") as Number;
    var pY:Number = tmpXML.attribute("y") as Number;
    var p:Point = Point(pX, pY);
    polygonPoints.push(p);
}

现在您可以在 Sprite 的图形对象内绘制多边形:

//Note we can recycle the "i" variable
var polyContainerSprite:Sprite = new Sprite();
polyContainerSprite.graphics.beginFill(0, 1);

for(i = 0; i < pointsVector.length; ++i) {
    if(i == 0) {
        polyContainerSprite.graphics.moveTo(pointsVector[i].x, pointsVector[i].y);
    }else {
        polyContainerSprite.graphics.lineTo(pointsVector[i].x, pointsVector[i].y);
    }    
}

stage.addChild(polyContainerSprite);

类似的东西应该可以工作。请注意,所有代码都未经测试,自从我真正用 Flash 制作任何东西以来已经有大约一年了。哈哈,所以测试一下,如果您有任何问题/疑虑,请告诉我,我会帮助澄清。

另请注意,对于您需要的每个多边形/ Sprite ,您基本上需要将此代码调整为“循环”“n”次。另请注意,您可以将 XML 保存到文件中,然后只需使用 URLLoader 对象加载它们,然后将数据转换为 XML。

关于actionscript-3 - 在 ActionScript 3 中从一组坐标对创建多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479959/

相关文章:

actionscript-3 - 如何在 AS3 Standalone Flash Player 中使用组合键 Ctrl + Enter?

actionscript-3 - 如何在 ActionScript 3.0 中更改屏幕背景颜色?

actionscript-3 - 为什么要在 flex 3 中使用 MXML?

javascript - 光标 : crosshair; for buttonImg

apache-flex - 如何根据多列对 flex 数据网格进行排序?

actionscript-3 - 发出 HTTP 请求时访问重定向到的 URL

apache-flex - 创建自定义 MXML 组件

actionscript-3 - AS3 MovieClip getRealBounds

actionscript-3 - AS3-抽象类

actionscript-3 - AS3 内部和自定义命名空间