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"));			
		}
		
	}
	
}

执行效果图:

ActionScript3 绘制图片镜像_第1张图片

你可能感兴趣的:(function,null,Class,import,actionscript,Matrix)