我有一个涂鸦应用程序,可以使用触摸事件进行操作。
JavaScript代码如下...
JavaScript代码如下...
var RADIUS = 10;
var ctx = document.querySelector("canvas").getContext("2d");
var getRandomColorFragment = function () {
return Math.floor(Math.random() * 255);
};
document.body.addEventListener("touchstart", function (event) {
ctx.fillStyle = "rgb(" + [getRandomColorFragment(), getRandomColorFragment(), getRandomColorFragment()].join() + ")";
});
document.body.addEventListener("touchmove", function (event) {
// Prevent default behavior of scrolling elements.
event.preventDefault();
// Get a reference to the first touch placed.
var touch = event.touches[0];
// Draw a circle at the location of the finger.
ctx.beginPath();
ctx.arc(touch.pageX - RADIUS, touch.pageY - RADIUS, RADIUS, 0, Math.PI * 2);
ctx.closePath();
ctx.fill();
});
如果您想在不支持触摸事件的平台上测试,请使用Chrome并打开Web Inspector的设置,然后选择模拟触摸事件。
当手指/指针移动得非常快时,它无法像预期那样连续地绘制画布(请参见上面的截图)。似乎我只能以touchmove
事件被触发的速度获取触摸坐标。
我认为可以使用距离公式(c2 = a2 + b2
)确定弧之间是否有足够大的间隔,以及确定这个间隔是否大于RADIUS
常量。这部分效果很好。下一步我需要解决的问题是如何在两点之间进行插值:先前注册的触摸坐标和新注册坐标之间的两点。
因此,基本上,我想知道如何在我有的两个点之间进行插值以确定如何填补间隙。