Windows 8の読み込みアニメーションに基づいて、単純な小さなスピナーウィジェットを作成しましたが、各ドットがわずかにジッターしているように見える理由を理解できませんでした。値を正規化するためにさまざまなことを試しましたが、それを滑らかにするものは見つかりませんでした。
私は何が間違っているのですか?
Windows 8の読み込みアニメーションに基づいて、単純な小さなスピナーウィジェットを作成しましたが、各ドットがわずかにジッターしているように見える理由を理解できませんでした。値を正規化するためにさまざまなことを試しましたが、それを滑らかにするものは見つかりませんでした。
私は何が間違っているのですか?
念のためスクリーンショットを撮りました。あなたのアニメーションは、サブピクセル アニメーションを実行していないようです。
アニメーションを本当に滑らかにするには、ピクセルを 1 ピクセルずつ移動するために、ある場所から別の場所に移動するだけでなく、平均で移動することを想像します。ピクセルはゆっくりとある空間から次の空間に移動します。他のピクセルがフェードインするにつれて、ピクセルが徐々にフェードアウトすることで、これをシミュレートできます。
あなたのアニメーションをスクリーンショットすると、サブピクセルアニメーションの兆候のないすべてのドットが表示されます.
私のビジネス ページ ( http://matthewrconsultancy.co.uk/start ) を見ると、Chrome などを使用すると歯車が動いていることがわかります。SVG と SMIL のアニメーションを使用していますが、拡大して見るとサブピクセル レベルでアニメーションが発生していることがわかります。申し訳ありませんが、まだ修正方法を理解する時間がありませんが、何が問題なのかという主な質問に直接答えることができます.
いくつかのオプション:
1) canvas を使用して円をアニメーション化してみてください。初期化中に、1 つの円をオフスクリーン キャンバスに描画し、その imageData を (getImageData を使用して) 簡単にアクセスできる変数に保存できます。アニメーションの各フレームで、メインのアニメーション キャンバス上のそれぞれの座標にある数の円に対して putImageData を使用します。新しいフレームごとにクリアすることを忘れないでください。
2) 円を解像度に依存しない画像 (SVG、CSS スタイル、またはユーザーの画面 DPI とブラウザー独自のピクセル表示に基づいてコンテキストを更新する API を使用した Canvas) として保存します。次に、transform: translate3d(x, y, z) を使用して円を移動してみます。これにより、よりスムーズな結果が得られる可能性がありますが、この変換によって有効になるハードウェア アクセラレーションにより、ブラウザーが特定の要素でサブピクセル アンチエイリアシングを使用できなくなると聞いています。また、変換プロパティはベンダー プレフィックスを使用することにも注意してください。
お役に立てれば!