我们之前研究的选择、平移、旋转、缩放,其实都是仿射变换。
用Matrix类比用displayobject的rotation、scaleX等属性更容易让人明白原理
这里贴一个对一个显示对象进行x轴缩放 的例子,其他类型的仿射变换同理
var square:Sprite = new Sprite();
with (square.graphics) {
beginFill(0x0000ff, 1);
moveTo(100,100);
lineTo(200,200);
lineTo(195, 205);
lineTo(95,105);
lineTo(100,100);
endFill();
}
addChild(square);
var m:Matrix = new Matrix(2.0, 0, 0, 1, 0, 0);
//方式1:注意参数顺序!并不是按矩阵表格的行列来排布!
//var m:Matrix = square.transform.matrix;
//方式2:获取源显示对象的matrix,利用Matrix类提供的接口来操作
//m.scale(2, 1);
//var m:Matrix = new Matrix();
//方式3:设置Matrix类的6个初始化属性
//m.a = 2;
//实例化一个变换
var t:Transform = new Transform(square);
//设置这个新变换的matrix属性为我们自己的矩阵
t.matrix = m;
//将该变换赋给源显示对象
square.transform = t;