2013-01-07 49 views
0

我試圖創建弧的旋轉動畫。即使在嘗試所有這些示例之後,我也無法圍繞該中心旋轉它。它正在圍繞左上角旋轉。圍繞中心旋轉柔性圖形對象

private function init():void 
     { 
      var hgroup:Group=new Group(); 
      this.addElement(hgroup); 

      arc1=new Graphic(); 
      arc1.graphics.lineStyle(12,0xff0000,1,false,"normal",CapsStyle.SQUARE); 
      draw_arc(arc1,CENTER,CENTER,70,14,288,1); 

      hgroup.addElement(arc1); 

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

      var rot:Rotate = new Rotate(); 
      rot.angleBy = 360; 
      rot.duration = 1000; 
      rot.target = arc1; 
      rot.play(); 

     } 

     public function draw_arc(movieclip:Sprite,center_x:Number,center_y:Number,radius:Number,angle_from:Number,angle_to:Number,precision:Number):void { 
      var angle_diff:Number=angle_to-angle_from; 
      var steps:Number=Math.round(angle_diff*precision); 
      var angle:Number=angle_from; 
      var px:Number=center_x+radius*Math.cos(angle*deg_to_rad); 
      var py:Number=center_y+radius*Math.sin(angle*deg_to_rad); 
      movieclip.graphics.moveTo(px,py); 
      for (var i:Number=1; i<=steps; i++) { 
       angle=angle_from+angle_diff/steps*i; 
       movieclip.graphics.lineTo(center_x+radius*Math.cos(angle*deg_to_rad),center_y+radius*Math.sin(angle*deg_to_rad)); 
      } 
     } 

回答

0

我有一個類似的問題(與旋轉箭頭)和我固定它是這樣的:

<s:Group width="0" height="0" verticalCenter="0" right="14"> 
    <s:Graphic id="arrow" rotation="90" rotation.selectedStates="0"> 
     <s:Path data="M 0 0 L 5 5 L 0 10 Z" left="-2.5" top="-5"> 
      <s:fill> 
       <s:SolidColor id="arrowFill"/> 
      </s:fill> 
     </s:Path> 
    </s:Graphic> 
</s:Group> 

Group有其大小設置爲0,因爲它只是作爲一個錨點的容器它包含的圖形。這個Group的位置是旋轉中心點。在Graphic中的Path被定位爲使得其錨定點位於其中心(即,其寬度爲5px並且高度爲10px,所以它被重新定位爲2.5px到左側和5px到頂部)。

實際的旋轉是通過StatesTransformations在這裏完成的,但Effect也做同樣的事情。

+0

對不起@RIAstar,它沒有爲我工作。 – Saju

0

要在中心旋轉圖像,你必須指定這個屬性

rot.autoCenterTransform="true"; 
rot.applyChangesPostLayout = false;