HTML5のキャンバスを使って複数の画像を読み込んみ、キャラクターを動かしてアニメーションをさせます。
キャラクターは、オノッチさんが描いたキャラクターを使用させて頂きました。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
<title>オノッチ画伯キャラクターのお散歩</title>
<style>
#canvas {
display: block;
margin: 0px auto;
}
</style>
<script>
var canvas;
var interval = 0;
var images = [];
var nowImage = 1;
// タイマー
function OnTimer() {
// コンテキスト
var ctx = canvas.getContext( "2d" );
// キャンバスクリア
ctx.drawImage(
images[ 0 ]
, 0 // 描画開始位置X
, 0 // 描画開始位置Y
);
// 画像の取得
var charImg = images[ nowImage ];
// 描画位置算出
var posX = canvas.width - ( interval * 4 ) % ( canvas.width + charImg.width );
var posY = canvas.height - charImg.height - Math.cos( ( Math.PI * ( ( interval * 2 ) % 90 ) ) / 180 ) * 100;
// イメージの描画
ctx.drawImage(
charImg
, posX // 描画開始位置X
, posY // 描画開始位置Y
);
interval++;
}
// 初期化
function OnInit() {
// キャンバス取得
canvas = document.getElementById( "canvas" );
// マウスクリック処理
canvas.addEventListener( "mousedown", function ( e ) {
nowImage++;
if ( nowImage >= images.length ) {
nowImage = 1;
}
}
);
// タイマー
setInterval( "OnTimer()", ( 1000 / 100 ) );
}
// 画像ロード
function OnImageLoad( callback ) {
// 画像のロード
function LoadImage( index, files ) {
var img = new Image();
img.onload = function () {
console.log( "index = " + index );
images.push( this );
if ( files.length > index + 1 ) {
console.log( "index = " + index );
LoadImage( index + 1, files );
}
else {
OnInit();
}
}
img.src = files[ index ];
};
// ロードするイメージ
var files = [
"./img/onoty_bk_image.png"
, "./img/onoty_image2.png"
, "./img/onoty_image3.png"
, "./img/onoty_image1.png"
, "./img/onoty_image4.png"
];
// イメージのロード
LoadImage( 0, files );
}
function OnLoad() {
OnImageLoad( OnInit );
}
</script>
</head>
<body onload="OnLoad();">
<h1>オノッチ画伯キャラクターのお散歩</h1>
<canvas id="canvas" width="640" height="480"></canvas>
<p>
画面をクリックすると、キャラクターが変わるよ♥
</p>
</body>
</html>