Matrix转rotation

Matrix可以控制显示对象的平移(x 和 y 重新定位)、旋转、缩放和倾斜:

var m:Matrix = new Matrix(scaleX, rotateSkew0, rotateSkew1, scaleY, translateX, translateY);

DisplayObject.transform.matrix = m;

这种写法在Flash中很方便,在其他框架下可能不支持transform或者matrix的方式去设置,因此需要从matrix里转换到旋转角度等。

看下带旋转和缩放后的Matrix数据。

Matrix转rotation_第1张图片

位移是可以从matrix直接获得的,缩放和旋转都需要重新计算:

var px:Point = matrix.deltaTransformPoint(new Point(0, 1));

rotation = ((180 / Math.PI) * Math.atan2(px.y, px.x) - 90);
if(rotation < 0) { rotation = 360 + rotation; }
xscale = Math.sqrt(scaleX * scaleX + rotateSkew0 * rotateSkew0);

yscale = Math.sqrt(rotateSkew1 * rotateSkew1 + scaleY * scaleY);


你可能感兴趣的:(经验,技术)