drawTriangles本质上是来虚拟3D的。
drawTriangles的第一个参数:vertices:Vector.。这是唯一的一个必要参数,可以指定6个(3对)Number(int不可以),作为Triangle的三个顶点。或者指定6*N个Number,来同时绘出N个Triangles。
drawTriangles的第二个参数:indices:Vector.。当使用这个参数的时候,drawTriangles的第一个参数vertices的length就不需要为6*N了。Flash会根据第二个参数indices来确定所绘制的Triangles的顶点位置,例如
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" layout="absolute">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
private var UI:UIComponent = new UIComponent();
public function init():void
{
addChild(UI);
UI.graphics.beginFill(0xFFFFFF);
UI.graphics.drawTriangles(Vector.<Number>([10,10, 100,100, 100,10,
110, 110, 200, 200, 200, 110]),
Vector.<int>([0,1,2, 2,4,5]))
}
]]>
</mx:Script>
</mx:Application>
这个例子先在第一个参数中指定了12个(6对)点。
然后用第二个参数来制定,使用哪三个点,来绘制Triangle。
当然,第一个参数中,可以只设置4个,或者8个点(非6的倍数)。
drawTriangles的第三个参数:uvtData:Vector.<Number>。这个参数是对填充的图案进行切割的参数。这个参数有两种取值可能。一:8个(4对)值,指定4个点来确定进行切割的四边形。二:12个(4对)值,指定4个点,以及这四个点的相对比例。如下例所示
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" layout="absolute">
<mx:Script>
<![CDATA[
import flash.display.BitmapData;
import mx.core.UIComponent;
private var UI:UIComponent = new UIComponent();
[Embed(source = 'Image.jpg')]
private var FuturImage:Class;
private var bitmapData:BitmapData = (new FuturImage() as Bitmap).bitmapData;
private var x1:Number = -100, y1:Number = -100, z1:Number = 0, t1:Number = 0;
private var x2:Number = 100, y2:Number = -100, z2:Number = 0, t2:Number = 0;
private var x3:Number = 100, y3:Number = 100, z3:Number = 0, t3:Number = 0;
private var x4:Number = -100, y4:Number = 100, z4:Number = 0, t4:Number = 0;
private var indices:Vector.<int> = new Vector.<int>();
private var vertices:Vector.<Number> = new Vector.<Number>();
private var uvtData:Vector.<Number> = new Vector.<Number>();
public function init():void
{
vertices.push(x1,y1, x2*0.5,y2*0.5, x3*0.5,y3*0.5, x4,y4);
indices.push(0, 1, 3, 1, 2, 3);
uvtData.push(0,0,1, 1,0,.5, 1,1,.5, 0,1,1);
UI.x = 200;
UI.y = 200;
addChild(UI);
UI.graphics.beginBitmapFill(bitmapData)
UI.graphics.drawTriangles(vertices, indices, uvtData);
}
]]>
</mx:Script>
</mx:Application>
参考文章:http://www.senocular.com/flash/tutorials/flash10drawingapi/