2013-01-04 23 views
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); 
     } 

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

回答

0

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

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

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

但是,如果您正在对完美正方形的对象执行旋转,并应用90度旋转,则前后的宽度应该相同。

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

+0

问题不仅在于跟踪输出。我可以看到,每次旋转时,精灵对象都会缩小 –