JavascriptでGIFアニメーションを制御できますか?
Can You Control Gif Animation With Javascript
解決:
あなたは使用することができます libgif 図書館。
gifを開始/停止し、gifがどのフレームにあるかを制御できます。
$$( 'img')。each(function(img_tag){if(/.* 。gif / .test(img_tag.src)){var rub = new SuperGif({gif:img_tag}); rub.load( function(){console.log( 'ああ、gifが読み込まれました');});}});(ほとんどのコードは彼らの例から直接取られています)
私が使う x-gif かなりクールでセットアップも簡単です。
Githubから:
以下を属性として追加できる場所:
- 再生モード:
speed = '1.0'(デフォルトモード)は、速度に属性の値を掛けます。
syncは、再生を外部オブジェクトに延期します。
bpm = '120'は、GIFを特定の1分あたりの拍数に同期します。
オプション:
停止すると、GIFがアニメーション化されなくなります。
fillを使用すると、GIFが拡張されてコンテナがカバーされます。
n-times = '3.0'(速度モードのみ)は、設定された回数後に再生を停止します(stopped属性を追加することにより)。
スナップ(同期モードとbpmモードのみ)長いGIFを複数のビートに同期させるのではなく、1つだけに収まるように強制します。
ピンポンはGIFを前面から背面に再生し、次に背面から前面に再生します。
- デバッグ:
debugは、GifExploderからのデバッグ出力をオンにします。
爆発は再生を停止し、各フレームを並べてレンダリングします。
gifをスプライトシートに変換しても問題がない場合は、次のように行うことができます(ImageMagickを使用)。
モンタージュanimation.gif-coalesce -tile x1 -geometry + 0 + 0-backgroundなし-quality100 spritesheet.png新しい画像のサイズが小さくなる可能性もあります。
スプライトシートを作成したら、CSSアニメーションを使用します。ここでは、フレーム時間が固定されたアニメーションが使用されます。
var el = document.getElementById( 'anim'); function play(){el.style.animationPlayState = '実行中'; }関数pause(){el.style.animationPlayState = '一時停止'; } function reset(){el.style.animation = 'none'; el.offsetHeight; / *リフローをトリガーして変更をすぐに適用します* / el.style.animation = null; } function stop(){reset();一時停止(); }#anim {background-image:url( 'https://i.stack.imgur.com/J5drY.png');幅:250px;高さ:188px;アニメーション:アニメーション1.0sステップ(10)無限; } @keyframes anim {100%{background-position:-2500px; }}再生一時停止リセット停止アニメーションを自動的に開始しないようにする場合は、次を追加します。最後まで一時停止アニメーションルール。