draw(),matrix简单使用

来源:互联网 发布:java中线程安全的类 编辑:程序博客网 时间:2024/05/16 07:31


Matrix 表示一个转换矩阵

|  a    b    tx  |

|  c    d    ty  |

|  u    v    w  |  

Matrix只能应用在二维空间中,所以uvw分别默认为001

a,d 表示宽高的缩放,默认值是1,b.c控制倾斜度,tx,ty控制x坐标和y坐标,默认为原点00


matrix相当于一个模具/一个层,设置好后应用到具体的实物中,实物就会得到对应的效果。模具自身有很多方法

rotate,scale,translate,createGradientBox等,这些知识对模具的修改,


使用 1:设置Matrix ,将它赋给新的transform 的matrix属性,然后修改目标对象 的transform,即可应用

!2: BitmapData 的draw() 方法  bmd.draw(source:IBitmapDrawable,matrix:Matrix)等参数。

说明: draw 默认从对象的注册点开始,所以如果你的对象的注册点在左上角,可以得到完整显示对象,不然只会截取一部分,从注册点开始,算width,height

这时候需要Matrix来帮忙调整,偏移量可以通过Rectangle来帮忙,默认的Rectangle的left和top为改矩形的x坐标和y坐标,技巧是:你要活得相对于自己的矩形,

那么这个坐标就是相对于自己注册点的坐标,

var rect:Rectangle = obj.getRect(obj); //如果注册点在中心,left = - obj.width,top = - obj.height,这就是需要的偏移量,如果Container参数填舞台的话,就是左上角相对于舞台原点的坐标

var mat:Matrix = new Matrix(1,0,0,1,-rect.left,-rect.top);  // tx ty的值为图像'偏移的值,正常如果注册点在中心,需要向右下偏移,所以再加 -号

最后再重新设定显示对象的坐标:


 

var rect:Rectangle = pic.getRect(pic);var bmd:BitmapData = new BitmapData(pic.width,pic.height,true,0);var mat:Matrix = new Matrix(1,0,0,1);bmd.draw(pic,mat);var bm:Bitmap = new Bitmap(bmd);bm.x = 100;bm.y = 100;addChild(bm);

可以用以实现简单的残影等

0 0
原创粉丝点击