ActionScript3 繪製圖片鏡像

Graphics 的 beginBitmapFill 可以傳入一個 Matrix 參數,用來指定對圖片要做的平移、縮放、旋轉等操作,只要把縮放參數設置爲負數就能實現繪製鏡像了。另外對 BitmapData 使用 draw 方法時縮放參數設置爲負的話沒有效果,不知是啥原因。

package 
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.geom.Matrix;
	import flash.net.URLRequest;
	
	/**
	 * ...
	 * @author zxc
	 */
	public class Main extends Sprite 
	{
		
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			var shape:Shape = new Shape();
			addChild(shape);
			
			var loader:Loader = new Loader();
			
			var onLoadComplete:Function = function (event:Event):void
			{
				trace(event);
				
				var bd:BitmapData = new BitmapData(loader.width, loader.height);
				bd.draw(loader);
				
				// draw left
				shape.graphics.beginBitmapFill(bd);
				shape.graphics.drawRect(0, 0, bd.width, bd.height);
				shape.graphics.endFill();
				
				// draw mirror left
				shape.graphics.beginBitmapFill(bd, new Matrix( -1, 0, 0, 1, 0, 0));
				shape.graphics.drawRect(bd.width, 0, bd.width, bd.height);
				shape.graphics.endFill();
			}
			var onIOError:Function = function (event:IOErrorEvent):void
			{
				trace(event);
			}
			
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
			loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
			loader.load(new URLRequest("left.png"));			
		}
		
	}
	
}

執行效果圖:

繪製鏡像圖片

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章