2012-03-05 13 views
0

私はキャンバスを初めて使うので、初心者の質問を赦してください。私は色を変えるキャンバス上の四角形をアニメーション化しようとしています。回転し、上下にスケールします(これは練習用です)。私はすべてのコンセプトを把握し、すべてを一度に行うサンプルを作成しようとしています。私はそれが何をしたいのかHTML5 Canvas - 色、スケール、回転をアニメーション化する

は、その金額に達すると、その後、それは開始量に戻ってスケールダウン(およびその後繰り返される)、一定量にスケールアップです。同じことが色のためになります(アニメーションを続けてから、色を逆向きに移動します)。どうすればこれを達成できますか?

http://jsfiddle.net/ggsFJ/1/

あなたはカップルのバグに気付くでしょう::色が黄色になる

  1. たら、それはアニメーションを停止し

    は、ここで私が書いた私のコードの例です。

  2. スケーリングは明らかに機能しません。それは位置の跡を見せているため

  3. 回転はどちらか、十分に速くキャンバスをクリアするか何かされていません。

これを達成するためのリソースはありますか。どんな助けもありがとうございます。

+0

私はminitechがあなたの問題に対処してくれたと思います。ただ言ってみたければ、 1.フレームレートは遅れていません。 2.最初のタイムアウトが完了した後、後のタイムアウトを呼び出す必要があります。 – loxxy

+0

この用語をクリアしていただきありがとうございます。それは間違いなく理にかなっています。 – opes

答えて

4

他のすべての問題を引き起こしている一つの小さな問題があります(まあ、別に黄色から - 私は特定の1つを経験していないよ):

ctx.restore; 

は、その行が何もしません。かっこを使用してctx.restoreに電話する必要があります。あなたはスケーリングが働き、clearRect()は、非形質転換長方形をクリアしますが、それを行うたら:私は見ることができます

ctx.restore(); 

And here's the updated demo.

+0

Ah。シンプルなタイプミス...ありがとう!しかし、それを元のスケールに徐々に縮小して戻すだけではどうしたらいいですか?どのようなタイプのループを使って私がそれを可能にしますか?また、色のバグを見るには、アニメーションを約30秒間実行させて、私が何を話しているのか見てみましょう。 – opes

+1

@ダン:滑らかな色の遷移のためには、単に 'hsl(...、...、...)'という色の構文を使う方が良いでしょう。それはすでにカラーホイールで、 ''をサポートするブラウザであればそれをサポートします。上がることについては、下に行くために、あなたはそれのための少しモダリティのトリックが必要になります。 http://jsfiddle.net/ggsFJ/8/で私のアップデートを見てください。 – Ryan

+0

恐ろしい!それがまさに私が探しているものです。それは私に多くを示す。ありがとう! – opes

0

問題は、あなたのrestoreメソッド呼び出しです。 あなたはちょうどctx.restore(恐らく間違って)と言っています。それがありますctx.restore();

+0

うん、単純なタイプミス。ありがとう、しかし! – opes

関連する問題