1

似乎将矩阵 rotate() 应用于显示对象与 DisplayObject.rotation 不同。我想要的是使用 matrix.rotate() 来获得与使用 rect.rotation = 45 相同的结果。但实际结果不一样。

代码示例:

public class Demo extends Sprite {
    public function Demo() {
       testRotation();
    }

    private function testRotation():void {
        var rect:Shape = new Shape();
        rect.graphics.beginFill(0xff0000,1);
        rect.graphics.beginFill(0xff0000, 1);
        rect.graphics.drawRect(0,0,100,100);
        rect.graphics.endFill();
        rect.x = 100;
        rect.y = 100;
        addChild(rect);
        var matrix:Matrix = new Matrix();
        trace(matrix);
        matrix.rotate(Math.PI*45/180);
        rect.transform.matrix = matrix;
    }
}
4

1 回答 1

0

原因是旋转方法围绕左上角(0,0)旋转坐标,如图所示。在此处输入图像描述

解决方案:

var matrix:Matrix = new Matrix();
matrix.translate(-50,-50)// Translate to center of square
matrix.rotate(Math*45/180); //rotate 45 degrees
matrix.translate(rect.x+150, rect.y+150)
rect.transform.matrix = matrix
于 2012-12-02T11:19:50.617 回答