光标移动速度太快,无法读取代码

时间:2016-10-21 12:33:38

标签: actionscript-3 mouseevent flashdevelop mousemove

我在移动鼠标光标时创建了一个MOUSE_MOVE MouseEvent和一个绘制圆圈的代码。问题是,如果我移动鼠标的速度太快,它就不会抽出每一个圆圈。 After I move the mouse cursor in a line with moderate speed

以下是我对MOUSE_MOVE事件的代码。

stage.addEventListener(MouseEvent.MOUSE_MOVE, mCursor);

public function mCursor(e:MouseEvent):void
{

    var cursor:Shape = new Shape();

    cursor.graphics.beginFill(1, 1);
    cursor.graphics.drawCircle(e.stageX, e.stageY, 10);
    cursor.graphics.endFill();
    addChild(cursor);
}

是否会有一个算术方程或物理公式让它添加每一个圆圈,这样它就可以绘制一条直线,而中间没有空白?

1 个答案:

答案 0 :(得分:2)

只需使用

cursor.graphics.lineTo(…);

在点之间绘制连续线而不是添加离散的单个圆。

  

我删除了上面的代码并添加了这一行代码cursor.graphics.lineTo(e.localX, e.localY);我测试了它并且之间有空白

您必须先调用lineStyle()对象的graphics方法来设置线宽。否则线宽为零(默认值)。

这是一个完整的工作文档类:

package 
{
    import flash.display.Sprite;
    import flash.display.Shape;

    import flash.events.MouseEvent;

    public class Main extends Sprite 
    {
        private var cursor:Shape;

        public function Main() 
        {
            cursor = new Shape();
            cursor.graphics.lineStyle(2);
            addChild(cursor);            

            stage.addEventListener(MouseEvent.MOUSE_MOVE, mCursor);
        }

        private function mCursor(e:MouseEvent):void
        {
            cursor.graphics.lineTo(e.stageX, e.stageY);
        }      
    }
}

您可能不得不使用moveTo来摆弄,以便设定合适的起始位置。现在代码是从0/0开始的。