HTML5 Canvas による残像アニメーション
目次
- 完成図
- Canvasの基本
- アニメーションのやり方
- 残像の残し方
- まとめ
完成図
Canvasの基本
HTML5 Canvas要素を使った残像アニメーションのやり方。
Canvasの基本的な使い方は以下のサイトを参考にするといいです。
Canvas - HTML5.JP
基本的な流れは以下の部分のようになります。
// init // ==================== window.onload = function() { var ctx = getCanvasContext("canvas"); // Canvasのコンテキストを取得 var size = getSize("canvas"); // Canvas描画領域の大きさを取得 drawAnimation(ctx, size, opt); // 丸を円軌道にアニメーションさせて描画 };
コメントにあるように、
という流れです。Canvas描画領域の大きさを取得とありますが、今回は単に描画位置指定のため事前に取得しておきたかっただけで、必要ない場合はもちろん省けます。
アニメーションのやり方
通常のアニメーションと同じようにsetTimeoutで関数を再帰させます。
// 丸を円軌道にアニメーションさせて描画 // ...(省略) var drawAnimation = function(ctx, size, opt) { var loop = function() { // ...(省略) // アニメーションのループ setTimeout(loop, opt.interval); }; loop(); };
残像の残し方
アニメーションのループでは、キャンバスを一旦クリアして次の描画を行っています。
ここではクリアの方法として背景色で塗りつぶす方法を採用しました。
その際に全てクリアするのではなく、アルファ値を指定し、薄く残します。
これによって残像が生まれます。
// キャンバスクリア(残像を残す)
ctx.globalAlpha = 1 - opt.afterimage;
ctx.fillStyle = opt.bgColor;
ctx.fillRect(0, 0, size.w, size.h);
ctx.globalAlpha = 1;
このキャンバスクリア部分の
ctx.globalAlpha = 1 - opt.afterimage;
という指定でアルファ値を指定しています。