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);
}
Теперь вы можете нарисовать многоугольник внутри графического объекта спрайта:
//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);
Нечто подобное должно работать.Обратите внимание, что весь этот код не тестировался, и прошло около года с тех пор, как я на самом деле сделал что-то во флэш-памяти.LOL, так что проверьте, и если у вас есть какие-либо вопросы / проблемы, дайте мне знать, я помогу прояснить.
Также обратите внимание, что вам нужно будет в основном настроить этот код, чтобы "цикл" 'n' раз, длякаждый поли / спрайт, который вам нужен.Также обратите внимание, что вы можете сохранить свой XML в файлы и просто загрузить их в виде объекта URLLoader и преобразовать данные в XML.