Raphael JS -鼠标悬停时开始/继续动画.鼠标离开时暂停动画
Raphael JS - Start/Continue animating during mouseover. Pause animation on mouseout
使用Raphael JS,是否有一种方法可以使圆圈在鼠标悬停期间向右移动(或任何方向),然后当光标不再在圆圈上时暂停/停止移动
我尝试了几种不同的方法,但是它们都有bug。其中一个主要问题是:如果鼠标光标在进入圆圈后没有移动,那么一旦圆圈移动到鼠标光标不再位于圆圈上方的位置,"mouseout"将不会被触发。
你会在这些不同的尝试中看到我的意思:
1)动画与暂停/恢复:
jsfiddle.net/fKKNt/
- 但是动画不稳定,不可靠。如果您将鼠标悬停在对象上,当对象移动到鼠标光标所在的位置之外时,它不会触发"mouseout"侦听器。
2)鼠标移到&.attr (cx):
jsfiddle.net/c4BFt/
- 但是我们希望动画在光标在圆圈内的时候也能继续。
3)使用setInterval(建议如下:"如果鼠标悬停";或者"鼠标悬停时执行";在JavaScript/jQuery):
jsfiddle.net/9bBcm/
- 但是当圆圈移动到光标所在的位置之外时,不会调用"mouseout"。例如,圆圈移动到应该调用"mouseout"的位置,但没有调用它。"hover"也是如此:
jsfiddle.net/STruB/
我相信有一种更优雅的方法可以做到这一点,但是我想,你可以尝试这样做:http://jsfiddle.net/D6Ps4/2/
如果由于某种原因消失了,我包含了下面的代码。解决方案只是启动动画,然后检查鼠标光标(注意e.offsetX/e.offsetY)是否在某个设定的间隔内位于Raphael Object (Element.getBBox())的边界框内。如果是,什么都不做,并使用setTimeout在一段时间后再次检查,如果不是,暂停动画。
var paper = Raphael("holder");
var animObject = Raphael.animation({cx: 400}, 5000);
circle = paper.circle(90, 90, 45).attr({fill: "#0E4"});
var timer;
circle.mouseover(function(e) {
var anim = function(shouldAnim) {
if (shouldAnim) {
circle.animate(animObject);
}
if (!mouseInsideCircle(e, circle)) {
circle.pause();
return;
} else {
timer = setTimeout(function() {anim(false)}, 20);
}
}
anim(true);
});
circle.mouseout(function() {
this.pause();
clearTimeout(timer);
});
var mouseInsideCircle = function(e, c) {
var bb = c.getBBox();
if (e.offsetX > bb.x && e.offsetY > bb.y) {
return true;
}
return false;
}
我确信解决方案是有缺陷的(它检查boundBox,而不是圆圈本身;它还假设圆是向右移动的),也许不是理想的,但它似乎工作得相当顺利,希望能让您走上正确的道路。
相关文章:
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- 如何在鼠标滚轮滚动上设置剪切遮罩的动画
- 如何在鼠标悬停时停止动画
- jQuery鼠标输出调用CSS3动画
- jQuery透明图像描述鼠标悬停时的幻灯片动画
- CSS 图标旋转 鼠标关闭时的第二个动画
- 纸张.js路径数据动画在帧和鼠标拖动
- 我想要一个类似于网站 https://onlycoin.com/ 的jQuery鼠标滚动动画效果
- 使用 javascript 在鼠标悬停时停止动画
- 鼠标按下时的动画环形图
- 如何在JS中随机化backgroundPosition而不使用鼠标移动来制作万花筒的动画
- d3将鼠标悬停在表格上时,制作图表动画
- Javascript move 元素与鼠标移动事件 60 FPS 请求动画帧
- HTML 中跟随鼠标的动画图像蒙版
- 使用鼠标滚轮控制页面滚动动画
- Javascript - 鼠标离开时延迟动画
- 如何在鼠标输入时对字体大小进行动画处理
- 在单击时对元素进行动画处理,并在该元素和其他元素上单击鼠标输入/鼠标离开
- Jquery动画鼠标光标不,单击后样式不更改
- Raphael JS -鼠标悬停时开始/继续动画.鼠标离开时暂停动画