4.メインループとcanvasの実装
今回は、canvasの設定をします。
canvasはdirectXサイズである640×480pxで表示したいと思います。
index.html上で以下を記入します。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>mario</title> <link href="css/reset.css" rel="stylesheet" type="text/css" /> <link href="css/base.css" rel="stylesheet" type="text/css" /> <script lang="JavaScript" src="javascript/main.js"></script> </head> <body> <!-- wrapper start --> <div id="wrapper"> <!-- header start --> <div id="header"> </div> <!-- header end --> <!-- gameCanvas start --> <div id="gameCanvas"> <canvas id="id_canvas1" width="640" height="480"></canvas> </div> <!-- gameCanvas end --> <!-- footer start --> <div id="footer"> </div> <!-- footer end --> </div> <!-- wrapper end --> </body> </html>
index.htmlの解説
gameCanvas内にcanvasのタグが入っています。
canvasのidがjavascript内で指定した要素になります。そのidに対してjavascript側で描画処理をすることになります。
widthとheightは画面縦、横のピクセル数です。もちろんcss上で定義することもできます。
このキャンバス内にゲーム画面の描画がされていくことになります。
では、次にmain.jsで描画しているところを見ていきます。
onload = function () { // キャンバスに代入 g_Canvas = document.getElementById('id_canvas1'); // JavaScript uses the id to find the <canvas> element: g_FpsElement = document.getElementById("fps"); // 読み込まれていない // cavasに対応していない if (!g_Canvas || !g_Canvas.getContext) { alert("html5に対応していないので、実行できません"); return false; } g_Ctx = g_Canvas.getContext('2d'); // ctx g_Scene = LOAD; // ロードシーンに移行 g_bLoaded = false; LoadTex(); // texture load requestNextAnimationFrame(animate); // loopスタート // キーの登録 //window.addEventListener('keydown', KeyDown, true); //window.addEventListener('keyup', KeyUp, true); }; function Draw(){ g_Ctx.fillStyle = "rgb(255,0,0)"; // 赤に設定 g_Ctx.fillRect(0,0,640,480); // 塗りつぶす }
main.js解説
onload関数で
g_Canvas = document.getElementById('id_canvas1');
とありますが、これはindex.htmlで指定したcanvasの内容を読み取っています。
// cavasに対応していない if (!g_Canvas || !g_Canvas.getContext) { alert("html5に対応していないので、実行できません"); return false; } g_Ctx = g_Canvas.getContext('2d'); // ctx
if文でie8などcanvasに対応してないブラウザに対しメッセージを出すようにしています。
g_Ctx = g_Canvas.getContext('2d');
で、描画のコンテキストを作成しています。
これで、描画オブジェクトができあがりました。
function Draw(){ g_Ctx.fillStyle = "rgb(255,0,0)"; // 赤に設定 g_Ctx.fillRect(0,0,640,480); // 塗りつぶす }
g_Ctx.fillStyleで塗りつぶす色の決定
g_Ctx.fillRectで塗りつぶす範囲を指定して、描画しています。
これで、描画とゲームループという基本的な部分が出来上がりました!
ここまでの実行結果を見る