我在移动鼠标光标时创建了一个MOUSE_MOVE MouseEvent和一个绘制圆圈的代码。问题是,如果我移动鼠标的速度太快,它就不会抽出每一个圆圈。
以下是我对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);
}
是否会有一个算术方程或物理公式让它添加每一个圆圈,这样它就可以绘制一条直线,而中间没有空白?
答案 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
开始的。