如何在鼠标按下时永久执行函数,直到鼠标向上
How to perpetually execute a function while the mouse is down, until the mouse is up?
我有以下功能来旋转图像
function rotateImage(offsetSelector, xCoordinate, yCoordinate, imageSelector){
var x = xCoordinate - offsetSelector.offset().left - offsetSelector.width()/2;
var y = -1*(yCoordinate - offsetSelector.offset().top - offsetSelector.height()/2);
var theta = Math.atan2(y,x)*(180/Math.PI);
var rotate = 'rotate(' + theta + 'deg)';
imageSelector.css('-moz-transform', rotate);
}
但是,当我以以下方式调用它时,它仅在鼠标按下时执行一次。
$('#someImage').on('mousedown', function(event){
rotateImage($(this).parent(), event.pageX,event.pageY, $(this));
});
我的目的是让图像在被抓取时旋转,直到用户松开鼠标单击。 有没有一种简单的方法可以在不使用外部库的情况下做到这一点?
示例:
var timer;
function rotateImageTimer(offsetSelector, xCoordinate, yCoordinate, imageSelector)
{
timer = setInterval("rotateImage('"+offsetSelector+"', '"+xCoordinate+"', '"+yCoordinate+"', '"+imageSelector+"')", 100);
}
function rotateImage(offsetSelector, xCoordinate, yCoordinate, imageSelector){
var x = xCoordinate - offsetSelector.offset().left - offsetSelector.width()/2;
var y = -1*(yCoordinate - offsetSelector.offset().top - offsetSelector.height()/2);
var theta = Math.atan2(y,x)*(180/Math.PI);
var rotate = 'rotate(' + theta + 'deg)';
imageSelector.css('-moz-transform', rotate);
}
$('#someImage').on('mousedown', function(event){
rotateImageTimer($(this).parent(), event.pageX,event.pageY, $(this));
});
$('#someImage').on('mouseup', function(event){
clearIneterval(timer);
});
当您
鼠标按下时,您需要使用 setInterval 重复调用一些代码,并在鼠标向上时取消它。
可以在此处找到一个例子:http://www.codingforums.com/showthread.php?t=166115
有关setInterval和setTimeout的一些信息:http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/
var isMouseDown = false;
$('#someImage').on('mousedown', function(event){
isMouseDown = true;
rotateImage($(this).parent(), event.pageX,event.pageY, $(this));
});
$('#someImage').on('mouseup', function(event){
isMouseDown = false;
});
function rotateImage(offsetSelector, xCoordinate, yCoordinate, imageSelector){
while(isMouseDown){
var x = xCoordinate - offsetSelector.offset().left - offsetSelector.width()/2;
var y = -1*(yCoordinate - offsetSelector.offset().top - offsetSelector.height()/2);
var theta = Math.atan2(y,x)*(180/Math.PI);
var rotate = 'rotate(' + theta + 'deg)';
imageSelector.css('-moz-transform', rotate);
}// end of while
}
在上面的代码中,我有一个可变isMouseDown
。当鼠标向下设置为true
.虽然它是真的,但你的图像应该旋转。我也对mouseup
具有约束力。当它被调用时,isMouseDown
被设置为false
。因此停止旋转。
当我需要在鼠标按下时在画布上绘图并在再次启动时停止时,我对我的绘图应用程序使用相同的技术。希望对:)有所帮助
相关文章:
- 我在画布中的鼠标按下函数在调用时不会重绘背景
- 在滑块控件离开鼠标后调用 Javascript 函数
- Jquery 悬停函数在将鼠标悬停在选择框上时会失败
- 如何使用onmousemove函数在每次鼠标移动时更改背景图像
- 如何使用鼠标悬停禁用 JS 函数
- 仅当鼠标不在输入字段上时,JQUERY 键控函数才会响应
- 鼠标速度 JavaScript 函数
- 为什么addEventListener只执行我的函数,而不为其创建鼠标悬停/鼠标打开事件
- 防止“鼠标输入”回调函数,直到“突出显示”效果完成
- 我的 js 函数在第二次单击鼠标后被调用
- 一个函数,用于检查鼠标是否仍在每 10 毫秒悬停一个元素(如果是,则运行一个函数)
- p5js 按钮.鼠标按下调用函数 + 参数
- 启动/停止函数执行 jQuery/JS 在鼠标事件上
- 了解函数中鼠标输入链接的类
- Jquery 鼠标悬停和淡入函数
- 如何在对象构造函数内动态处理鼠标移动
- 如何识别哪个图像标记正在调用鼠标悬停函数
- 通过调用函数清理鼠标输入
- D3 X 值鼠标悬停 - 函数返回 NaN
- 如何在嵌入数据上调用鼠标函数