2012-12-11 69 views
0

我正在做一個Adobe空中交互式桌面項目,我正在嘗試補間一些旋轉。大多數情況下,它可以正常工作,但偶爾它會繞着旋轉方向旋轉一點。有沒有人有一個好的方法來防止補間Flash中的這個問題?將閃爍補間旋轉設置爲最短距離as3?

我的代碼片段:

var rotatePos:Number; 
     if (event.rotation > 180) { rotatePos = event.rotation - 360; } else { rotatePos = event.rotation; } 
     var rotateDifference:Number = Math.abs(Math.abs(rotatePos) - Math.abs(Number(rotationCurrent[tempCircleNumber]))); 
     if (rotateDifference > 4 && rotateDifference < 60) { 
      rotateTheFiducial(); 
     } else if (rotateDifference > 100) { 
      trace("too far, ignore : " + rotateDifference); 
     } 
     function rotateTheFiducial():void 
     { 
      try 
      { 
       var cardTweenRotation:Tween = new Tween(MovieClip(fiducialArray[tempCircleNumber]), "rotation", Regular.easeOut, Number(rotationCurrent[tempCircleNumber]), rotatePos, .2, true); 

       rotationCurrent[tempCircleNumber] = rotatePos; 

      } 
      catch (e:Error) 
      { 
       trace(fiducialId + " : Rotate Error : " + e); 
      } 
     } 

回答

0

你真的應該避免使用閃光燈內置吐溫引擎。它的慢,臃腫,並且缺少很多真正有用的東西

嘗試使用TweenLite/TweenMax或更好,eaze都具有內置函數短期旋轉像你所面臨的。 它們比使用默認的Tween引擎更快! (因爲你可以看到here

你不僅可以進行排序那種短輪伐期的問題,但你的應用程序將與他們的一個變快:-)

+0

是啊,我結束了與tweenlite – HeroicNate

1

Regular.easeOut應該執行上述行爲。

有時候,雖然有多個緩和的補間,但閃光甚至漏掉了最後一點。

所以,如果您必須使用緩衝區,請添加補間完成事件,其中您手動設置了最終點。

否則使用None.easeNone

+1

嗯..我想我我會嘗試greensock shortRotation。我喜歡它的緩解。 – HeroicNate

+0

更好。它管理更輕鬆優雅... – loxxy