gpt4 book ai didi

javascript - html5 canvas - touchmove - 如何计算速度和方向?

转载 作者:行者123 更新时间:2023-11-30 07:41:32 29 4
gpt4 key购买 nike

所以我想测量用户在 html5 Canvas 上滑动的速度和方向?

似乎应该已经写了一些东西来做到这一点,所以我不必重新发明轮子,但我找不到任何东西。有人知道 JavaScript 函数吗?

如果我必须自己做,我会这样想:

  • 抓取触摸事件 x 和 y,将它们存储在数组变量中
  • 计算两点之间的斜率(如果斜率不同,可能取平均值)
  • 不确定如何测量速度,也许是点之间的距离?

还有其他想法吗?

这是我的 Canvas 和形状,它会监听触摸事件。触摸我的 iphone 或 iphone 模拟器时,我通常会收到 1 或 2 个事件。我看到了坐标。我在舞台和形状上使用 kineticjs。

如需尝试,请在您的 iPhone 中访问此网址,然后将手指放在圆圈上并将其推到某处。 (或者如果你有 ios 模拟器,你也可以使用它)

这是我的 fiddle : 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);

谢谢乔尔

最佳答案

您可以通过以下步骤轻松完成:

  • 着陆,存储时间和位置
  • 润色,储存时间和位置

在与 touch up 相同的处理程序中继续这些步骤:

要获得与您相关的因素,请将距离除以时差。值越大,速度越快。

关于javascript - html5 canvas - touchmove - 如何计算速度和方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091701/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com