2013-02-23 56 views
2

我的代码是在这里:从对象画线鼠标(AS3)

 graphics.clear(); 
     graphics.lineStyle(1, 0, 1); 
     graphics.moveTo(cannon.x, cannon.y); 
     graphics.lineTo(mouseX, mouseY); 

它似乎并没有被画任何东西。 顺便说一下,它现在在ENTER_FRAME中。

回答

4

参考下面的代码。这是我简单的代码绘制应用程序。并粘贴以下代码:

startXstartY应该改为您的对象(cannon)。

如果你想删除以前的行。在onDrawReady处理程序中调用this.graphics.clear();

var isDrawingReady:Boolean; 
var startX:Number, startY:Number; 
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDrawReady); 
stage.addEventListener(MouseEvent.MOUSE_UP, onDrawStop); 
stage.addEventListener(MouseEvent.MOUSE_MOVE, onDraw); 
function onDrawReady(e:MouseEvent):void 
{ 
    startX = e.stageX; 
    startY = e.stageY; 
    isDrawingReady = true; 
} 

function onDraw(e:MouseEvent):void 
{ 
    if(isDrawingReady) 
    { 
     this.graphics.lineStyle(2,0xff0000); 
     this.graphics.moveTo(startX,startY); 
     this.graphics.lineTo(e.stageX,e.stageY); 

     startX = e.stageX; 
     startY = e.stageY; 
    } 

    e.updateAfterEvent(); 
} 

function onDrawStop(e:MouseEvent):void 
{ 
    isDrawingReady = false; 
} 

编辑

如果你想永远当鼠标移动画线。尝试如下:

var startX:Number, startY:Number; 
stage.addEventListener(MouseEvent.MOUSE_MOVE, onDraw); 
function onDraw(e:MouseEvent):void 
{ 
    this.graphics.lineStyle(2,0xff0000); 
    this.graphics.moveTo(startX,startY); 
    this.graphics.lineTo(e.stageX,e.stageY); 

    startX = e.stageX; 
    startY = e.stageY; 

    e.updateAfterEvent(); 
} 
+0

我希望它总是绘制,就像每当我移动我的鼠标绘制一条线。如果还不清楚,请告诉我。 – user2101341 2013-02-23 01:37:17

+0

我编辑过。请检查。 – 2013-02-23 01:42:15

+0

工作,谢谢。 – user2101341 2013-02-23 01:50:21