2011-08-27 65 views
0

我有一個簡單的類:拖動精靈留下足跡

package Bubbles 
{ 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.display.LineScaleMode; 
    import flash.display.CapsStyle; 
    import flash.display.JointStyle; 

    public class Test extends Sprite 
    { 
     public function Test() 
     { 
      var g = graphics; 

      g.lineStyle(12, 0xEEEEFF, 1.0, true, LineScaleMode.NONE, CapsStyle.NONE, JointStyle.MITER); 
      g.drawRoundRect(0, 0, 60, 60, 10, 10); 

      addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
      addEventListener(MouseEvent.MOUSE_UP, onMouseUp); 
     } 

     private function onMouseDown(e:MouseEvent) 
     { 
      startDrag(); 
     } 

     private function onMouseUp(e:MouseEvent) 
     { 
      stopDrag(); 
     } 
    } 
} 

是在課堂上Event.ADDED_TO_STAGE處理程序設置爲舞臺的類添加使用:

  var t = new Test(); 
      t.x = 20; 
      t.y = 20; 
      addChild(t); 

現在,當我無論是在瀏覽器中啓動應用程序或在Flash播放器,並開始拖動對象我看到像在圖像上的路徑: trails

階段只有那個綠色的矩形 在上面。如果我刪除它沒有任何變化。如果我將線條厚度更改爲6個線跡不出現,則在7和更高線條出現。您可以在這裏查看SWF:http://hg.n0rd.com/bubbles.html。我如何使其正常工作?

更新: 如果我將該矩形形狀更改爲具有銳角的星形,則即使在較低厚度值(當厚度等於或大於3時出現軌跡),軌跡也會出現。

回答

1

得到它與

graphics.lineStyle(12,0xEEEEFF,1.0,真,LineScaleMode.NORMAL,CapsStyle.NONE,JointStyle.MITER的)工作;

我將LineScaleMode.NONE更改爲LineScaleMode.NORMAL。

希望你不必設置它?

+0

是的,這也適用於我。謝謝。 – n0rd

0

您不在每次繪製時重繪背景。正因爲如此,項目邊界在下一次繪製不會被覆蓋時仍然保留在背景上。

+0

這並不能解釋爲什麼當厚度小於或等於6時沒有路線離開。此外,我從來沒有打擾過重新繪製背景,我沒有任何問題 - 這是閃光燈,它應該自動工作。 – n0rd

+0

@nOrd如果你不應該重繪背景,那麼當移動形狀時,它看起來像是計算要重繪的像素的一個缺陷。當您以銳角和寬邊移動正方形時會發生什麼? –

+0

重新繪製背景以清除Flash中的屏幕是一個可怕的想法(當使用繪圖API時),這將在先前繪製的圖形上疊加另一個圖層,*所有*將重繪下一幀,快速將您的幀率減少到停止。使用'graphics.clear()'來清除屏幕。 – grapefrukt