[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
// @Main.as import mx.controls.*; import flash.display.*; import flash.events.*; import flash.ui.Keyboard; import DistortImage; [SWF (backgroundColor = "#FFFFFF", width = "640", height = "480", frameRate = "12")] [Embed(source = 'assets/testimg.jpg')] private var myImg:Class; private var bmp:Bitmap = new myImg(); private var shape:Shape = new Shape(); private var di:DistortImage = new DistortImage(320, 240, 2, 2); public function Init():void { stage.addChild(shape); // ついでにフルスクリーンモードのテストも兼ねておこう。 stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown); } private function keyDown(evt:KeyboardEvent):void { switch (evt.keyCode) { case Keyboard.ENTER: stage.displayState = StageDisplayState.FULL_SCREEN break; } } private function onEnterFrame():void { shape.graphics.clear(); shape.graphics.lineStyle(1, 0xEEEEEE, 0.3); // setTransform を使って四頂点を point で指定するだけで変形できる di.setTransform(shape.graphics, bmp.bitmapData, // 上から左上、右上、右下、左下の順 getObjectCenter(tl), getObjectCenter(tr), getObjectCenter(br), getObjectCenter(bl) ); } private function getObjectCenter(btn:DisplayObject):Point { // 各ボタン(ドラッグポイント)の中心を求めて point を返す関数 var center:Point = new Point() center.x = btn.x + btn.width / 2; center.y = btn.y + btn.height / 2; return center }
<?xml version="1.0" encoding="utf-8"?> <!-- @DistortImageTest.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="Init()" enterFrame="onEnterFrame()" layout="absolute"> <mx:Script source="Main.as" /> <mx:Button id="tl" x="20" y="20" width="24" height="24" buttonMode="true" mouseDown="tl.startDrag()" mouseUp="tl.stopDrag()" /> <mx:Button id="tr" x="340" y="20" width="24" height="24" buttonMode="true" mouseDown="tr.startDrag()" mouseUp="tr.stopDrag()" /> <mx:Button id="bl" x="20" y="260" width="24" height="24" buttonMode="true" mouseDown="bl.startDrag()" mouseUp="bl.stopDrag()" /> <mx:Button id="br" x="340" y="260" width="24" height="24" buttonMode="true" mouseDown="br.startDrag()" mouseUp="br.stopDrag()" /> </mx:Application>