1

私は 2 つの色とビュー コンポーネントを持っています。色 1 は私のコンポーネントの背景です。背景色を2色に変更します。しかし、突然ではありません。同様のアニメーションを変更します。例えば:

1 秒目: 90% color1 + 10% color2 2 秒目: 80% color1 + 20% color2 ...... 2 秒目: 10% color1 + 90% color2 2 秒目: 0% color1 + 100% color2

もちろん試してみます:

percent=100;
while (percent>=0) {
    color = (color1*precent)+(color2*(100-percent));  
    percent-=10;
}

しかし、これは悪い考えです。結果は残念です。このターゲットに対する解決策はありますか。ありがとう。

4

1 に答える 1

1

結果が期待外れである理由を明確に述べていないので、得られる色の変化が期待したほど良くないことを意味していると思います.

あなたの一般的なアプローチは正しいようです。詳細が欠けているだけかもしれませんので、別の用語で書き直します。R color1color2G、B のそれぞれが [0, 1] の範囲内にあるトリプル (R、G、B) とします。そうでない場合は、それが状況の限界であれば 255 で割り、後でもう一度255を掛けますs。の最終フレーム。ステップでは、次のような値があります。でフレーム内の色を取得します。ここで、255を掛けたいと思うかもしれません。color1color2scolor1color2kpp = (s - k)/spkcolor = p * color1 + (1 - p) * color2color

この説明の擬似コードは次のとおりです。

color1 = (R1, G1, B1)
color2 = (R2, G2, B2)
s = N

for k = 0 to s: # s + 1 steps, according to the description
    p = (s - k) / s
    color = (p * color1) + ((1 - p) * color2)

k = 0atには しかなくcolor1、 at にはk = sしかないことに注意してくださいcolor2。ご覧のとおり、詳細を投稿したものと似ています。ここでは、R、G、B のそれぞれに を掛けていることに注意してくださいp

以下は、それぞれ黄色から青色に遷移する例steps = 10, 25, 500です。

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

于 2012-12-17T19:11:34.387 に答える