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



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

使用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());

我有个主意。

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

结果为false。这意味着精灵在得到矩阵的时候会合成矩阵。

可以组成如下:

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

首先缩放,然后旋转,最后平移。这是不一样的。

最新更新