コードにいくつかの間違いがあります...
最初にパラメーターで、イージング メソッド (mina.bounce など) が抜けていたので、それを含める必要があります。
2 番目の内部関数には、アニメーション パラメーターの一部としてコールバックがないため、適切なタイミングで呼び出されないため、これらすべてが少し間違っています。
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);