2012-01-12 15 views
2

私はjQuery上で無限のアニメーションを作成する方法を疑問に思っています "バックグラウンド位置のアニメーション"プラグインで私はsetInterval()を実装しようとしました。しかしそれはうまくいかなかった、そこにjsfiddle。無限の背景位置のアニメーション - jQuery

http://jsfiddle.net/fyuga/2/

あなたは誰も私を助けることができる

$('#tile').css({backgroundPosition:'0px 0px'}); 
function infinite(){ 
     $('#tile').animate({backgroundPosition:"-5000px -2500px"},12000); 
} 
infinite(); 
setInterval(infinite,12000); 

のようなjsのコードを見ることができますか?

ありがとうございます!

答えて

2

アニメーションがアニメーションコールバックの内側にくると、背景の初期位置をリセットする必要があります。

DEMO jsBin with setTimeout

$('#tile').css({backgroundPosition:'0px 0px'}); 

var to; 

function infinite(){ 
to = setTimeout(function(){ 
    $('#tile').animate({backgroundPosition:"-5000px -2500px"},12000,function(){ 
     $('#tile').css({backgroundPosition:'0px 0px'}); 
     infinite(); 
    });  
    }); 
} 
infinite(); 



またはあなたの道: が、私は昔のsetIntervalを使って悪いの問題だった - タブの非アクティブの原因となるアニメーションbuildupsを、私はこの問題があると思いますjQueryバージョン1.6から削除されました。

ここに行く:

DEMO jsBin with setInterval

$('#tile').css({backgroundPosition:'0px 0px'}); 
function infinite(){ 

    $('#tile').animate({backgroundPosition:"-5000px -2500px"},12000,function(){ 
    $(this).css({backgroundPosition:'0px 0px'}); 
    }); 
} 
infinite(); 
setInterval(infinite,12000); 
+0

それが働いていますが、最終的な位置でそれにブレーキを見ることができ、私はそれ止められないアニメーションしたいと思い、このようにすることが可能でしょうか?可能でない場合は、私はあなたの答えを – Ivan

+0

@Ivanと記してお試しください。私は最初にそのコードを解読する必要があります。 –

+0

更新:http://jsbin.com/aqotif/3/edit#javascript,html,live私は "linear"をanimate()で実装しました。それは無限のアニメーションになります、ありがとう! – Ivan

4

か、この使用することができます。

function infinite(){ 
    $('#tile').css({backgroundPosition:'0px 0px'}).animate({backgroundPosition:"-5000px -2500px"},12000, infinite); 
} 
infinite(); 
2

を私は答えるで遅れる場合がありますが、私は必要としない機能を行っていますバックグラウンド位置のプラグイン。

var animate = $('#element'); 
function loopbackground() { 
    animate.css('background-position', '0px 0px'); 
    $({position_x: 0, position_y: 0}).animate({position_x: -5000, position_y: -2500}, { 
     duration: 12000, 
     easing: 'linear', 
     step: function() { 
      animate.css('background-position', this.position_x+'px '+this.position_y+'px'); 
     }, 
     complete: function() { 
      loopbackground(); 
     } 
    }); 
} 
loopbackground(); 

ビューここでの作業のデモ:http://jsfiddle.net/kusg5mdg/

関連する問題