onmousemoveを使ったプログラム
枠内でマウスポインタを移動すると模様が描かれる
このプログラムは onmousemove を使用している /* canvas要素のノードオブジェクト */ var canv1 = document.getElementById('canvas_id'); var nn,rr,gg; onload = function () { draw_canvas(); }; /* onmousemove の例: たとえば http://www.ilovex.co.jp/blog/system/html5-canvas-2.html を参考とした。この関数はマウスが移動すると実行される。 */ function mousemove(e) { var x, y; // マウスのウインドウ内 x,y座標を計算するための変数 var rect = e.target.getBoundingClientRect(); x = e.clientX - rect.left; // マウスのx座標 - ウインドウx左端座標 y = e.clientY - rect.top; // マウスのy座標 - ウインドウy上端座標 var c1 = canv1.getContext('2d'); c1.beginPath(); c1.fillStyle = 'rgb(255,128,0)'; // オレンジ色を選択 c1.shadowColor = 'rgb(0,0,0)'; // 黒を影の色として選択 c1.shadowOffsetX = 3; // 影のxオフセット=3ドット c1.shadowOffsetY = 3; // 影のyオフセット=3ドット c1.shadowBlur = 5; // 影の太さ=5ドット c1.rect(x,y, 18, 18); // x,y座標に18x18方形を描画する c1.fill(); // 塗りつぶす } function draw_canvas() { /* canvas要素の存在チェックとCanvas未対応ブラウザの対処 */ if (!canv1 || !canv1.getContext) { return false; } canv1.onmousemove = mousemove; }このプロうグラムは、通常通りにcanvas タグ、scriptタグを作ってから、scriptタグ内に記入する。canvasタグ、scriptタグの作り方は -> こちら
onmousemove の基本的プログラム /* canv1, c1はmousemove関数でも参照するから、帯域変数として定義しておく*/ var canv1; var c1; onload = pageload; /* ページがロードされた際に実行する関数 */ function pageload() { canv1 = document.getElementById('canvas_id'); if (!canv1 || !canv1.getContext) { return false; } c1 = canv1.getContext('2d'); /* マウスが移動した際に mousemove 関数を実行するように設定する */ canv1.onmousemove = mousemove; }; /* mouseが移動した際に実行する関数 */ function mousemove(e) { var rect = e.target.getBoundingClientRect(); var x = e.clientX - rect.left; var y = e.clientY - rect.top; c1.clearRect(0, 0, 400, 400); c1.fillStyle = 'rgb(0,0,255)'; c1.fillRect(x-5, y-5, 10, 10); }
練習問題
練習1: 表示される色を青に変更してみよ。
練習2: 描画される図形を半径2ドットの影のない「円」にしてみよ。
練習3: 描画される図形を2ドットずつずれた7つの円とし、7色としてみよ。
参考
HTML5 Japan CUP