注:这里的DisplayObject的注册点都在左上角的原点(0,0)处,也就是说显示对象里面的内容的左上角与(0,0)坐标重合,如果你已经把显示对象的注册点弄到了内容的中心上,就不能也不需要用这段代码了。
//com.cstar.utils.FlipUtil.as
package com.cstar.utils { public class FlipUtil { public static function flipH(target:DisplayObject):void { if(!target) { return; } var matrix:Matrix=target.transform.matrix; //如果设置了3D属性,则matrix会变成null,无法再执行2D水平翻转 if(!matrix) { return; } var m:Matrix=new Matrix(-1,0,0,1,target.x+target.width,0); matrix.concat(m); target.transform.matrix=matrix; } public static function flipV(target:DisplayObject):void { if(!target) { return; } var matrix:Matrix=target.transform.matrix; //如果设置了3D属性,则matrix会变成null,无法再执行2D垂直翻转 if(!matrix) { return; } var m:Matrix=new Matrix(1,0,0,-1,0,target.y+target.height); matrix.concat(m); target.transform.matrix=matrix; } } }
原文地址:http://cstar.blog.51cto.com/2923639/1612253