私の最終的な編集については以下をお読みください!
フレーム間でアニメーションをトゥイーンせずに CSS3 アニメーションを使用することは可能ですか?
たとえば、2 つのキャラクター アニメーション スプライトがある画像があります。それらは 50px の等間隔に配置されています。次のアニメーションを使用すると、まだトゥイーンが表示されます (ただし、トゥイーンは非常に高速であるため、ちらつきのように見える場合があります)。
#ball .animated{
-webkit-animation-name: animate;
-webkit-animation-duration: .5s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-timing-function: linear;}
@-webkit-keyframes animate{
0%{-webkit-transform: translate3d(0,0,0);}
49%{-webkit-transform: translate3d(0,0,0);}
50%{-webkit-transform: translate3d(-50px,0,0);}
100%{-webkit-transform: translate3d(-50px,0,0);}
したがって、上記に基づいて、スプライト フレームは、期間の最初の 0 ~ 49% の間、画像の最初の部分 (x = 0px) に保持され、その後、画像の 2 番目の部分 (x = -50px) にジャンプする必要があります。 50 ~ 100% の場合。ただし、0 から -50 ピクセルまでのトゥイーンを視覚的に確認するには、1% の差でも十分です。
考え?
編集:
-webkit-animation-timing-function: cubic-bezier(1,0,1,0);
上記は少しまっすぐに見えましたが、しばらくするとちらつきに戻ります。
編集:パーセンテージで小数を使用できることに気づきませんでした。ギャップを 1% から 0.1% に近づけると、はるかに高速なトゥイーンが作成され-webkit-animation-duration:
ます。
0%{-webkit-transform: translate3d(0,0,0);}
49.9%{-webkit-transform: translate3d(0,0,0);}
50%{-webkit-transform: translate3d(-50px,0,0);}
100%{-webkit-transform: translate3d(-50px,0,0);}
最終編集!: わかりました。私が見つけた Web キット アニメーションのパーセンテージからは、100 万分の 1 までの小数点以下 (つまり 0.0001) を受け入れることができます。比較的短いアニメーション タイマーでは、瞬時に翻訳されます。ちょっとしたハックだと思いますが、うまくいきます。
例:
@-webkit-keyframes sprite {
0% {
-webkit-transform: translate3d(0,0,0);
}
50% {
-webkit-transform: translate3d(0,0,0);
}
50.0001%{
-webkit-transform: translate3d(-50px,0,0);
}
100%{
-webkit-transform: translate3d(-50px,0,0);
}
}
上記の例は、コンテナー div 内の 100 ピクセル (画像上の各スプライトの幅は 50 ピクセル)の画像でwidth: 50px
ありoverflow:hidden
、一度に画像から 1 つのスプライトのみを表示します。
注: translate3d を使用しているのは、translateX、translateY、translateZ がまだハードウェア アクセラレーションされていないモバイル ブラウザーでハードウェア アクセラレーションを使用しているためです。