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

その理由は、写真が示すように、 rotateメソッドが左上隅 (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 に答える