所以我想测量用户在html5画布上滑动的速度和方向?
似乎应该有一些已经写好的东西,所以我不必重新发明轮子,但我找不到任何东西。有人知道JavaScript函数吗?
如果我必须自己做,我在想这个:
还有其他想法吗?
这是我的画布和我的形状,它会听取触摸事件。触摸我的iphone或iphone模拟器时,我通常会收到1或2个事件。我看到了坐标。我正在使用kineticjs进行舞台和塑造。
要尝试一下,请转到iPhone中的此网址,然后将手指放在圆圈上并将其推到某处。 (或者,如果你有ios模拟器,你也可以使用它)
这是我的小提琴: http://jsfiddle.net/jnylund/uRgZZ/16/
function writeMessage(messageLayer, message) {
var context = messageLayer.getContext();
messageLayer.clear();
context.font = '18pt Calibri';
context.fillStyle = 'black';
context.fillText(message, 10, 25);
var div = document.getElementById('tevents');
div.innerHTML = div.innerHTML + message + "<BR/>";
}
var stage = new Kinetic.Stage({
container: 'container',
width: 460,
height: 320
});
var layer = new Kinetic.Layer();
var messageLayer = new Kinetic.Layer();
var circle = new Kinetic.Circle({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
radius: 40,
fill: 'red',
stroke: 'black',
strokeWidth: 4 //,
// draggable: true
});
circle.setX(230);
circle.setY(160);
circle.on('touchmove', function (event) {
writeMessage(messageLayer, 'touch event length is ' + event.touches.length);
for (var i = 0; i < event.touches.length; i++) {
var touch = event.touches[i];
writeMessage(messageLayer, 'event x: ' + touch.pageX + ', y: ' + touch.pageX);
}
var touchPos = stage.getTouchPosition();
writeMessage(messageLayer, 'stage x: ' + touchPos.x + ', y: ' + touchPos.y);
});
// add the shape to the layer
layer.add(circle);
// add the layer to the stage
stage.add(layer);
stage.add(messageLayer);
感谢 乔尔
答案 0 :(得分:6)
您可以通过以下步骤完成此操作:
在与修饰相同的处理程序中继续执行以下步骤:
要获得与您相关的因素来划分时差的距离。值越高,速度越快。
答案 1 :(得分:1)
可以通过多种方式测量速度:
然后将值转换为应用中使用的比例,例如kph或mph for racing。