存储用户';用javascript绘制图形

存储用户';用javascript绘制图形,javascript,canvas,html5-canvas,paperjs,pixi.js,Javascript,Canvas,Html5 Canvas,Paperjs,Pixi.js,我需要存储用户绘制的路径,以及任意给定点的速度。基本上记录一条线是如何画的。之后我必须能够操纵/编辑图形(路径和速度) 类似于此,但也有速度/速度信息: 我想知道我该如何存储速度?有没有比每秒存储指针位置10次更好的方法?任何一行都可以表示为大量的点。如果您存储每个点的时间戳,您将能够推断出直线上任意两点之间的平均速度 正如您上面链接的,这是一个在JS中表示路径的有趣示例。我建议研究现有的库,用Javascript创建和表示路径。从长远来看,与编写自己的功能库相比,它将节省您的时间 下面是有关

我需要存储用户绘制的路径,以及任意给定点的速度。基本上记录一条线是如何画的。之后我必须能够操纵/编辑图形(路径和速度)

类似于此,但也有速度/速度信息:


我想知道我该如何存储速度?有没有比每秒存储指针位置10次更好的方法?

任何一行都可以表示为大量的点。如果您存储每个点的时间戳,您将能够推断出直线上任意两点之间的平均速度

正如您上面链接的,这是一个在JS中表示路径的有趣示例。我建议研究现有的库,用Javascript创建和表示路径。从长远来看,与编写自己的功能库相比,它将节省您的时间

下面是有关Javascript绘图库中的差异的相关堆栈溢出答案


您可以将其存储在自己定制的对象中。创建一个事件侦听器,在单击每个
mousemove
事件后侦听该事件:

var pointArray = [];

onMouseMove(event){
    var pointData = {
        x: event.screenX,
        y: event.screenY,
        time: Date.now()
    }

    pointArray.push(pointData);
}

现在你有了一个长的
点阵列
充满了位置和时间信息!顺便说一句,每秒存储10次数据是没有意义的,因为只有在鼠标不动的情况下,才会得到多余的信息。最好只听一下
mousemove

时间戳是个好主意。!恐怕平均速度不够,这样可能不行。无论如何,我将进一步调查这种方法……有意义。我会考虑一下,为什么在所有鼠标事件都有高分辨率时间戳的情况下使用Date对象呢<代码>事件。时间戳
以毫秒为单位,精确到1微秒。我刚刚在FFox中测试了您的方法,我得到了124个
控制台。在值更改之前,读取
18446744072697221000
的日志
Date.now()
有更好的效果。@Blindman67如何使用高分辨率的时间戳?DOM计时器的运行时间仅为毫秒,您不能“重放”带有hires时间戳的记录。@Blindman67您没有回答问题。您将如何使用高分辨率时间戳
requestAnimationFrame()
以60fps的速度封顶,以及
setTimeout()
以1ms的速度封顶。。。