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; var rect = e.target.getBoundingClientRect(); x = e.clientX - rect.left; y = e.clientY - rect.top; var c1 = canv1.getContext('2d'); c1.beginPath(); c1.fillStyle = 'rgb(255,128,0)'; c1.shadowColor = 'rgb(0,0,0)'; c1.shadowOffsetX = 3; c1.shadowOffsetY = 3; c1.shadowBlur = 5; c1.rect(x,y, 18, 18); c1.fill(); } function draw_canvas() { /* canvas要素の存在チェックとCanvas未対応ブラウザの対処 */ if (!canv1 || !canv1.getContext) { return false; } canv1.onmousemove = mousemove; }
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); }
HTML5 Japan CUP