2011-08-27 64 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