drawTrianglesをやってみた
前から興味があったdrawTriangleに触ってみました。
これは画像の4隅を頂点にして、その四角形を三角形二つに分けています。
結構簡単でびっくりしました。
package { import __AS3__.vec.Vector; import flash.display.Bitmap; import flash.display.Shape; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; [SWF(backgroundColor="#000000")] public class DrawTriangle01 extends Sprite { [Embed(source='Dock.jpg')] private var img:Class; private var bmp:Bitmap=new img(); private var p1:DrugPoint, p2:DrugPoint, p3:DrugPoint, p4:DrugPoint; private var t:Shape=new Shape(); private var vec:Vector.<Number>, uvtData:Vector.<Number>; private var indices:Vector.<int>; public function DrawTriangle01() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; vec = new Vector.<Number>(); vec.push(100,100,400,100,100,400,400,400); indices = new Vector.<int>(); indices.push(0,1,2,1,2,3); uvtData=new Vector.<Number>(); uvtData.push(0, 0, 1, 0, 0, 1, 1, 1); addChild(t); p1 = new DrugPoint(100,100); p2 = new DrugPoint(400,100); p3 = new DrugPoint(100,400); p4 = new DrugPoint(400,400); addChild(p1); addChild(p2); addChild(p3); addChild(p4); addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onEnterFrame(event:Event):void{ vec=Vector.<Number>([p1.x, p1.y, p2.x, p2.y, p3.x, p3.y, p4.x, p4.y]); t.graphics.clear(); t.graphics.beginBitmapFill(bmp.bitmapData); t.graphics.drawTriangles(vec, indices, uvtData); t.graphics.endFill(); } } } import flash.events.MouseEvent; import flash.display.Sprite; class DrugPoint extends Sprite{ public function DrugPoint(x:Number, y:Number, color:uint=0xff0000){ this.x = x; this.y = y; graphics.beginFill(color); graphics.drawCircle(0,0,5); graphics.endFill(); addEventListener(MouseEvent.MOUSE_DOWN, function():void{ startDrag(); }); addEventListener(MouseEvent.MOUSE_UP, function():void{ stopDrag(); }); } }