0

私は自分のウェブサイトに次のコードを持っています....

まず、リンクをクリックしてアニメーション/機能を開始するにはどうすればよいですか?

次に、アニメーションの最後のフレームを「フリーズ」するにはどうすればよいですか? (もしかしたらタイマー?)

ありがとう。

HTML マークアップ:

<div id="anim"></div>

CSS:

#anim {
width: 14px; height: 14px;
background-image: url(http://mail.google.com/mail/im/emotisprites/wink2.png);
background-repeat: no-repeat; 
}

Javascript:

var scrollUp = (function () {
  var timerId; // stored timer in case you want to use clearInterval later

  return function (height, times, element) {
    var i = 0; // a simple counter
    timerId = setInterval(function () {
      if (i > times) // if the last frame is reached, set counter to zero
        i = 0;
      element.style.backgroundPosition = "0px -" + i * height + 'px'; //scroll up
      i++;
    }, 100); // every 100 milliseconds
  };
})();

// start animation:
scrollUp(14, 42, document.getElementById('anim'))

ここにフィドルがあります:http://jsfiddle.net/ctF4t/

4

2 に答える 2

1

あなたのコードはすでにそのための準備ができています.2行目を読んでください:

  var timerId; // stored timer in case you want to use clearInterval later

setInterval は、一定の間隔で何度も実行される関数を定義するために使用されます。これを止めるにはclearIntervalを使います。アニメーションの最後に、フレーム カウンター i を 0 にリセットする代わりに、clearInterval を使用してアニメーションをすべて停止します。

        if (i > times) { 
            clearInterval(timerId);
        }

これは、デバッグ用の追加出力を備えたフィドルです: http://jsfiddle.net/bjelline/zcwYT/

于 2013-05-05T08:22:42.953 に答える
0

こんにちは、js オブジェクト ハンドル start と stop を返すことtimerIdができます。外部関数からアクセスできないプライベートとして機能します。

var scrollUp = (function () {
    var timerId, height, times ,i = 0 , element; 

    return {
        stop : function(){
            clearInterval( timerId );
        },
        init :function( h, t, el ){
            height = h;
            times = t;
            element =el ;
        },
        start : function ( ) {
            timerId = setInterval(function () {
              // if the last frame is reached, set counter to zero
              if (i > times) {
                i = 0;
              }
              //scroll up         
              element.style.backgroundPosition = "0px -" + i * height + 'px'; 
              i++;
            }, 100); // every 100 milliseconds
          }
    };
})();

http://jsfiddle.net/ctF4t/1/で完全なアクションを参照してください。これがあなたに役立つことを願っています

于 2013-05-05T08:30:50.247 に答える