Javascript 每x毫秒获取jquery触摸位置

Javascript 每x毫秒获取jquery触摸位置,javascript,jquery,html,touch,touch-event,Javascript,Jquery,Html,Touch,Touch Event,当此时的x坐标与开始时的x坐标不同(例如50px)时,是否有办法在touchmove事件中每x毫秒获取一次触摸位置,然后执行一个函数 谢谢这可以通过几个功能完成 当触摸事件发生移动时,调用第一个函数,该事件将触摸的x和y存储在单独的变量中 然后我们有一个函数,每X毫秒运行一次,这个函数从move事件中获取X和y,然后发送到代码中 功能3、4和5用于处理启动、停止和取消排放,以及启动/停止第二个功能: var-timerid; var x; 变量y; var tick=0; 功能手柄(evt

当此时的x坐标与开始时的x坐标不同(例如50px)时,是否有办法在touchmove事件中每x毫秒获取一次触摸位置,然后执行一个函数


谢谢

这可以通过几个功能完成

  • 当触摸事件发生移动时,调用第一个函数,该事件将触摸的x和y存储在单独的变量中

  • 然后我们有一个函数,每X毫秒运行一次,这个函数从move事件中获取X和y,然后发送到代码中

  • 功能3、4和5用于处理启动、停止和取消排放,以及启动/停止第二个功能:

var-timerid;
var x;
变量y;
var tick=0;
功能手柄(evt){
控制台日志(“handleStart”);
evt.preventDefault();
timerid=window.setInterval(timer,50);//这里用X替换50
}
函数句柄(evt){
控制台日志(“handleEnd”);
evt.preventDefault();
清除间隔(timerid);
}
功能手柄取消(evt){
控制台日志(“handleCancel”);
evt.preventDefault();
清除间隔(timerid);
}
功能手柄移动(evt){
控制台日志(“handleMove”);
evt.preventDefault();
//选择最后一点:
变量点=evt.changedTouches[evt.changedTouches.length-1];
x=点.pageX;
y=点pageY;
}
函数计时器(){
控制台日志(“计时器”);
tick++;
document.getElementById(“输出”).innerHTML=“勾选:+tick+”x:+x+”y:+y;
}
var el=document.getElementById(“画布”);
el.addEventListener(“touchstart”,handleStart,false);
el.addEventListener(“touchend”,handleEnd,false);
el.addEventListener(“touchcancel”,handleCancel,false);
el.addEventListener(“触摸移动”,handleMove,false)

看看,它正是您所需要的。它支持称为pan的“touchmove”,即在平移时每隔几毫秒调用一次。还有一个
threshold
属性,用于确定在将其识别为平移之前必须平移的像素长度。

请尝试以下方法

$('document').ready(函数(){
var touch,
行动,
扩散,
迪菲,
endX,
恩迪,
startX,
斯塔蒂,
计时器,
timerXseconds=500,//更改为检查触摸位置的时间(毫秒)
xDifferenceX=50,//将x坐标从起点更改为差分(px)以运行函数
xDifferenceY=50;//将y坐标从起点更改为差值(px)
函数getCoord(e,c){
return/touch/.test(e.type)?(e.originalEvent | | e)。更改触控[0]['page'+c]:e['page'+c];
}
功能测试触摸(e){
如果(e.type==“touchstart”){
触摸=真实;
}否则如果(触摸){
触摸=假;
返回false;
}
返回true;
}
启动功能(ev){
if(测试触摸(ev)和操作){
行动=正确;
startX=getCoord(ev,'X');
startY=getCoord(ev,'Y');
diffX=0;
diffY=0;
timer=window.setInterval(checkPosition(ev),timerXseconds);//每次获取坐标
如果(ev.type=='mousedown'){
$(document).on('mousemove',onMove.).on('mouseup',onned);
}
}
}
移动功能(ev){
如果(行动){
检查位置(ev)
}
}
功能检查位置(ev){
endX=getCoord(ev,'X');
endY=getCoord(ev,'Y');
diffX=endX-startX;
diffY=endY-startY;
//检查移动时的坐标是否与起点相差X像素
if(Math.abs(diffX)>xDifferenceX | | Math.abs(diffY)>xDifferenceY){
//log('开始是:'+startX+'结束是:'+endX+'差异是:'+diffX);
$(this.trigger('touchend');
//在这里添加要运行的函数。。。
}
}
功能ONED(ev){
窗口清除间隔(计时器);
如果(行动){
行动=错误;
如果(ev.type=='mouseup'){
$(document).off('mousemove',onMove.).off('mouseup',onned);
}
}
}
$(“#监视器”)
.bind('touchstart mousedown',onStart)
.bind('touchmove',onMove)
.bind('touchend touchcancel',onEnd);
});
正文{
保证金:0;
填充:0;
}
#监视器{
高度:500px;
宽度:500px;
位置:相对位置;
显示:块;
左:50px;
顶部:50px;
背景:绿色;
}
.盒子{
位置:绝对位置;
排名:0;
左:0;
右:0;
文本对齐:居中;
字体大小:粗体;
底部:0;
背景:白色;
宽度:50px;
高度:50px;
保证金:自动;
字体大小:16px;
线高:23px;
}

从这里开始