图像应该使用jquery或javascript跟随触摸位置
我有一个图像,我希望图像移动到任何触摸输入发生的地方。基本上,图像应该充当虚拟光标。我已经为mousemove做过了,但同样的代码不适用于touch-move图像应该使用jquery或javascript跟随触摸位置,javascript,jquery,Javascript,Jquery,我有一个图像,我希望图像移动到任何触摸输入发生的地方。基本上,图像应该充当虚拟光标。我已经为mousemove做过了,但同样的代码不适用于touch-move 期望:在桌面上跟随光标位置的图像,并在触摸设备中遵循触摸位置。 您可能需要考虑使用 .[()] />代码>绑定。 function moveImg(e){ console.log(e); $('img').offset({ left: e.pageX-55, top: e.pageY-45 }); } $(
期望:在桌面上跟随光标位置的图像,并在触摸设备中遵循触摸位置。
您可能需要考虑使用<代码> .[()] />代码>绑定。function moveImg(e){
console.log(e);
$('img').offset({
left: e.pageX-55,
top: e.pageY-45
});
}
$(document).on({
mousemove: moveImg,
touchmove: moveImg
});
请记住,并非所有浏览器都支持touchmove
:
pageX
和pageY
似乎是触摸事件的一部分,但如果有超过1个触摸点,则可能会导致一些问题。请参阅更多:
TouchEvent
界面封装了当前处于活动状态的所有触点。Touch
界面表示单个触摸点,包括触摸点相对于浏览器视口的位置等信息
我会做更多的测试,如果需要的话,稍后会更新答案
更新1
工作示例:
移动示例:
touchmove
事件正在寻找并可能捕获多个接触点。所以为了解决这个问题,我们要检查第一个,忽略另一个
$(function() {
function log(eObj) {
var str = eObj.type + " [" + eObj.top + "," + eObj.left + "]";
$("#results").html(str);
}
function moveCursor(e) {
var p;
var o = {
x: 55,
y: 45
};
if (e.type == "mousemove") {
p = {
left: Math.round(e.pageX - o.x),
top: Math.round(e.pageY - o.y),
type: e.type
};
} else if (e.type == "touchmove") {
var touch = e.changedTouches[0];
p = {
left: Math.round(touch.pageX - o.x),
top: Math.round(touch.pageY - o.y),
type: e.type
}
}
$('.cursor').css(p);
log(p);
}
$(document).on({
mousemove: moveCursor,
touchmove: moveCursor
});
});
正如您所看到的,事件.changedTouches
是各种触点及其属性的数组。如果我们关注event.changedtouchs[0]
,我们可以获得您要查找的pageX
和pageY
详细信息
<>希望有帮助。 您可能想考虑使用<代码> .[()] />代码>绑定。
function moveImg(e){
console.log(e);
$('img').offset({
left: e.pageX-55,
top: e.pageY-45
});
}
$(document).on({
mousemove: moveImg,
touchmove: moveImg
});
请记住,并非所有浏览器都支持touchmove
:
pageX
和pageY
似乎是触摸事件的一部分,但如果有超过1个触摸点,则可能会导致一些问题。请参阅更多:
TouchEvent
界面封装了当前处于活动状态的所有触点。Touch
界面表示单个触摸点,包括触摸点相对于浏览器视口的位置等信息
我会做更多的测试,如果需要的话,稍后会更新答案
更新1
工作示例:
移动示例:
touchmove
事件正在寻找并可能捕获多个接触点。所以为了解决这个问题,我们要检查第一个,忽略另一个
$(function() {
function log(eObj) {
var str = eObj.type + " [" + eObj.top + "," + eObj.left + "]";
$("#results").html(str);
}
function moveCursor(e) {
var p;
var o = {
x: 55,
y: 45
};
if (e.type == "mousemove") {
p = {
left: Math.round(e.pageX - o.x),
top: Math.round(e.pageY - o.y),
type: e.type
};
} else if (e.type == "touchmove") {
var touch = e.changedTouches[0];
p = {
left: Math.round(touch.pageX - o.x),
top: Math.round(touch.pageY - o.y),
type: e.type
}
}
$('.cursor').css(p);
log(p);
}
$(document).on({
mousemove: moveCursor,
touchmove: moveCursor
});
});
正如您所看到的,事件.changedTouches
是各种触点及其属性的数组。如果我们关注event.changedtouchs[0]
,我们可以获得您要查找的pageX
和pageY
详细信息
希望这能有所帮助。以上代码对正常应用程序非常有用。但对于我的threejs应用程序,当我实现它时,它实际上将我的图像与te游标分开,无论我更改什么值,它的行为都是相同的。@Janathanthumburu我为您的问题提供了答案。看起来你在以其他方式使用它,在你最初的问题中没有提到。如果这回答了您原来的问题,我希望您将其标记为答案。你如何选择使用它取决于你自己。如果你需要更多的帮助,你可以四处搜索或发布另一个问题。但对于我的threejs应用程序,当我实现它时,它实际上将我的图像与te游标分开,无论我更改什么值,它的行为都是相同的。@Janathanthumburu我为您的问题提供了答案。看起来你在以其他方式使用它,在你最初的问题中没有提到。如果这回答了您原来的问题,我希望您将其标记为答案。你如何选择使用它取决于你自己。如果您需要更多帮助,您可以四处搜索或发布其他问题。