所以我有一些javascript,当一个人点击并拖动或拖动他们的手指(在移动设备上)并循环通过一系列图像来创建360图像旋转效果。这是代码。
$(document).ready(function ($) {
var $product = $('#product'),
$imgs = $product.find(".child"),
imageTotal = $imgs.length - 1,
clicked = false,
widthStep = 20,
currPos,
currImg = 0,
lastImg = 0;
$imgs.bind('mousedown', function (e) {
e.preventDefault(); // prevent dragging images
})
.filter(':gt(0)').addClass('notseen');
$product.bind('mousedown touchstart', function (e) {
if (e.type == "touchstart") {
currPos = window.event.touches[0].pageX;
} else {
currPos = e.pageX;
}
clicked = true;
});
$(document)
.bind('mouseup touchend', function () {
clicked = false;
})
.bind('mousemove touchmove', function (e) {
if (clicked) {
var pageX;
if (e.type == "touchmove") {
pageX = window.event.targetTouches[0].pageX;
} else {
pageX = e.pageX;
}
widthStep = 20;
if (Math.abs(currPos - pageX) >= widthStep) {
if (currPos - pageX >= widthStep) {
currImg++;
if (currImg > imageTotal) {
currImg = 0;}
} else {
currImg--;
if (currImg < 1) {
currImg = imageTotal;
}
}
currPos = pageX;
$imgs.eq(lastImg).addClass('notseen');
$imgs.eq(currImg).removeClass('notseen');
lastImg = currImg;
// $obj.html('<img src="' + aImages[options.currImg] + '" />');
}
}
});
});
现在以此为基础,我希望模拟鼠标或手指在文档加载后拖动一定距离,我想模拟此功能以创建自动旋转。
现在我知道我需要在这里使用mousedown/touchstart
和mousemove/touchmove
函数,但是从那里我就失去了如何启动它并设置模拟距离。任何想法和帮助表示赞赏。
答案 0 :(得分:1)
一种简单的方法是重构代码以将touchstart和touchmove暴露为自己的函数/对象。
这将允许您在任何情况下从任何地方打电话给他们,而不必依赖于实际发生的事件。
我最近阅读了一篇很棒的文章,解释了有关如何有效执行此操作的一些建议:https://shanetomlinson.com/2013/testing-javascript-frontend-part-1-anti-patterns-and-fixes/