当我点击“播放”时,我有一个CSS3动画,随机游动。问题是当我点击“停止”时我无法阻止推挤,这就是我需要完成的事情。
我试图同时使用“-webkit-animation-play-state”和jquery .stop()函数,但无济于事。我认为我很接近,但似乎无法得到这个。
我创建了jsfiddle,代码如下。
提前致谢!
<html>
<head>
<style>
#sec {
background: url(http://placekitten.com/200/200);
background-repeat:no-repeat;
z-index: 3;
position: absolute;
width: 200px;
height: 200px;
top: 45px;
left: 105px;
}
</style>
<script>
$(document).ready(function(){
$("#play-bt").click(function(){
setInterval( function() {
var seconds = Math.random() * -20;
var sdegree = seconds * 2 ;
var num = -30;
var together = num + sdegree;
var srotate = "rotate(" + together + "deg)";
$("#sec").css({"-moz-transform" : srotate, "-webkit-transform" : srotate});
}, 100 );
});
$("#stop-bt").click(function(){
$("#sec").stop(stopAll);
})
})
</script>
</head>
<body>
<div id="sec"></div>
<br/>
<div id="play-bt">Play</div>
<br/>
<div id="stop-bt">Stop</div>
</body
</html>
答案 0 :(得分:2)
用于停止它的setInterval()
对应clearInterval()
。每次调用setInterval()
都会返回一个区间ID,您可以将其传递给clearInterval()
以停止它。
因此,您需要存储setInterval()
的结果,并在点击停止btn时将其清除。
$(document).ready(function(){
var animation = null;
$("#play-bt").click(function(){
if (animation !== null) { // Add this if statement to prevent
return; // doubled animations
}
animation = setInterval( function() {
var seconds = Math.random() * -20;
var sdegree = seconds * 2 ;
var num = -30;
var together = num + sdegree;
var srotate = "rotate(" + together + "deg)";
$("#sec").css({"-moz-transform" : srotate, "-webkit-transform" : srotate});
}, 100 );
});
$("#stop-bt").click(function(){
//$("#sec").stop(stopAll);
if (animation !== null) {
clearInterval(animation);
animation = null;
}
});
});