JohnBlackburne
I implemented his idea, it really works
beautiful graphics built
http://share.pho.to/ASOd1
But the performance is much lower than with quad
public function lineStyle(thickness:Number = 1, color:uint = 0, alpha:Number = 1):void
{
_thickness = thickness;
_color = color;
_alpha = alpha;
//beginFill(_color, _alpha);
}
public function moveTo(x:Number, y:Number):void
{
_fromX = x;
_fromY = y;
}
public function lineTo(x:Number, y:Number):void
{
_toX = x;
_toY = y;
var _mesh:Mesh = MeshFromPolygon( line(_fromX, _fromY, _toX, _toY, _thickness), _color, _alpha);
addChild(_mesh);
_fromX = x;
_fromY = y;
}
override public function clear():void
{
batch.clear();
}
private function MeshFromPolygon(polygon:Polygon, color:uint, alpha:Number):Mesh
{
var vertexData:VertexData = new VertexData();
var indexData:IndexData = new IndexData(polygon.numTriangles * 3);
polygon.triangulate(indexData);
polygon.copyToVertexData(vertexData);
vertexData.colorize('color', color, alpha);
return new Mesh(vertexData, indexData);
}
private function line (fromX:Number, fromY:Number, toX:Number, toY:Number, thickness:Number):Polygon {
var len:Number, fXOffset:Number, fYOffset:Number;
fXOffset = toX - fromX;
fYOffset = toY - fromY;
len = Math.sqrt(fXOffset * fXOffset + fYOffset * fYOffset);
fXOffset = fXOffset * thickness / (len * 2);
fYOffset = fYOffset * thickness / (len * 2);
return new Polygon ([
fromX + fYOffset, fromY - fXOffset,
toX + fYOffset, toY - fXOffset,
toX - fYOffset, toY + fXOffset,
fromX - fYOffset, fromY + fXOffset
]);
}