[英]html5 canvas - touchmove - how to calculate velocity and direction?
所以我想衡量用户在html5画布上滑动的速度和方向如何?
似乎应该已经写了一些东西来做到这一点,所以我不必重新发明轮子,但我找不到任何东西。 有人知道JavaScript函数吗?
如果我必须自己做,我在想:
还有其他想法吗?
这是我的画布和形状,它侦听触摸事件。 当触摸我的iPhone或iPhone模拟器时,我通常会收到1或2个事件。 我看到了坐标。 我正在为舞台和形状使用dynamicjs。
要尝试,请在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);
谢谢乔尔
您只需执行以下步骤即可:
在与修饰相同的处理程序中,继续执行以下步骤:
为了获得与您相关的因素,请在时间差上划分距离。 值越高,速度越快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.