as3调用matrix.scale()和直接设置scaleX和scaleY有什么区别

时间:2015-10-08 10:38:48

标签: actionscript-3 matrix

为什么下面两个代码块的结果不一样?

使用matrix.scale()

const sprite:Sprite = new Sprite;
const matrix:Matrix = new Matrix;
sprite.transform.matrix = matrix;

matrix.translate(100, 50);
matrix.scale(2, 1);
sprite.transform.matrix = matrix;
trace(sprite.transform.matrix.toString());

设置sprite.scaleX

const sprite:Sprite = new Sprite;
const matrix:Matrix = new Matrix;
sprite.transform.matrix = matrix;

matrix.translate(100, 50);
sprite.transform.matrix = matrix;
sprite.scaleX = 2;
trace(sprite.transform.matrix.toString());

1 个答案:

答案 0 :(得分:0)

我有个主意。

trace(sprite.transform.matrix == sprite.transform.matrix);

结果是错误的。这意味着sprite会在获取矩阵时组成矩阵。

可能如下所示。

matrix.createBox(sprite.scaleX, sprite.scaleY, sprite.rotation, sprite.x, sprite.y);

首先缩放,然后旋转,最后翻译。 它有所不同。

相关问题