你的代码有几个错误...
首先,在您的参数中,您错过了缓动方法(如 mina.bounce),因此需要包含在内。
第二个内部函数没有回调作为动画参数的一部分,所以也不会在正确的时间被调用,所以所有这些都有点错误。
jsfiddle
var s = Snap(400, 620);
var slight_bounce = function(body_part, transform1, transform2 ){
body_part.stop().animate({
transform: transform1
}, 1000, mina.bounce,
function() {
body_part.animate({
transform: transform2
},1000,mina.bounce,
function() {
slight_bounce(body_part, transform1, transform2);
})
}
);
};
var hat = s.rect(100,100,100,100);
var bounce = 't0,100';
var bounce_back = 't0,0';
slight_bounce(hat, bounce, bounce_back);
由于这是一个很常见的问题,所以我将给出一个轻微的替代重写,因为我发现这样编写的回调函数方法有点笨拙。
这完全一样,但我发现它更有条理。
jsfiddle
function startBounce( body_part, transform1, transform2 ) {
body_part.stop().animate({
transform: transform1
}, 1000, mina.bounce, endBounce.bind(null, body_part, transform1, transform2));
}
function endBounce( body_part, transform1, transform2 ) {
body_part.animate({
transform: transform2
}, 1000, mina.bounce, startBounce.bind(null, body_part, transform1, transform2));
}
var hat = s.rect(100,100,100,100);
var bounce = 't0,100';
var bounce_back = 't0,0';
startBounce(hat, bounce, bounce_back);