0

我创建了一个继承自的类,Sprite并添加了以下从中心旋转的函数:

private function rotate(angle:Number):void
        {
            trace(width);

            var tmpWidth:Number = width;
            var rect:Rectangle = getBounds(parent); 
            var matrix:Matrix = transform.matrix;
            matrix.translate(-(rect.left + rect.width/2), -(rect.top + rect.height/2) );
            matrix.rotate((angle/180)*Math.PI); 
            matrix.translate((rect.left + rect.width/2), (rect.top + rect.height/2) );
            transform.matrix = matrix;

            trace(width);
        }

我的问题是对象的大小在旋转后发生了变化。例如,变换前的宽度值小于变换后的宽度。我究竟做错了什么?

4

1 回答 1

0

我没有看到任何意外的行为。

由于您正在应用旋转,因此旋转后宽度和高度可能会有所不同。

例如,如果您对 50x100 的精灵应用 90 度旋转,它现在将是 100x50 的精灵。

但是,如果您在一个完全正方形的对象上执行旋转,并应用 90 度旋转,那么之前和之后的宽度应该是相同的。

请记住,宽度和高度是根据对象的边界计算的。通过旋转对象,您可能会更改对象的边界,从而更改宽度和高度。

于 2013-01-04T20:14:49.433 回答