HTML5 2

キーの取得

キーが押された時に何かの処理を実行するには、 実行される関数を以下のイベントハンドラに登録しておきます。

onkeydown
キーが押されたときに実行される関数を登録する
onkeyup
キーが離されたときに実行される関数を登録する
onkeypress
キーが押され続けたときに実行される関数を登録する

登録しておく関数には、引数が1つあります。 その引数のkeyCodeの値を得ることによって、押されたキーのコードを調べることができます。

キーの取得の例

キーを押すことによって、図形を移動してみましょう。

<!DOCTYPE html>
<html>
<head>
<title>Canvasサンプル6</title>
<meta charset="UTF-8">
</head>
<body>
<h1>Canvasサンプル6</h1>
<canvas id="canvas6" width=300 height=300></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas6");
var context = canvas.getContext("2d");

var rightDown = false;
var upDown = false;
var leftDown = false;
var downDown = false;

var rx = 100;
var ry = 100;
context.fillRect(rx, ry, 20, 20);

function onKeyDown(evt) {
	if (evt.keyCode == 39)
		rightDown = true;
	else if (evt.keyCode == 37)
		leftDown = true;
	else if (evt.keyCode == 38)
		upDown = true;
	else if (evt.keyCode == 40)
		downDown = true;
}

function onKeyUp(evt) {
	if (evt.keyCode == 39)
		rightDown = false;
	else if (evt.keyCode == 37)
		leftDown = false;
	else if (evt.keyCode == 38)
		upDown = false;
	else if (evt.keyCode == 40)
		downDown = false;
}

document.onkeydown = onKeyDown;
document.onkeyup = onKeyUp;

function draw() {
	context.clearRect(0, 0, canvas.width, canvas.height);
	if(rightDown == true)
		rx += 5;
	else if(upDown == true)
		ry -= 5;
	else if(leftDown == true)
		rx -= 5;
	else if(downDown == true)
		ry += 5;
	context.fillRect(rx, ry, 20, 20);
}
setInterval(draw, 10);
</script>
</body>
</html>

HTML解説

var rightDown = false;
→ボタンが押されているかどうかを表す変数です。
falseは論理値の偽の値を表します。 正の値は、trueで表します。
var upDown = false;
↑ボタンが押されているかどうかを表す変数です。
var leftDown = false;
←ボタンが押されているかどうかを表す変数です。
var downDown = false;
↓ボタンが押されているかどうかを表す変数です。
var rx = 100;
図形のX方向の初期位置です。
var ry = 100;
図形のY方向の初期位置です。
function onKeyDown(evt) {
キーが押されたときに実行される関数の定義です。
if (evt.keyCode == 39)
evt.keyCodeの中に押されたキーのコード(番号)が入っています。
39は→キーを表します。
else if (evt.keyCode == 37)
37は←キーを表します。
else if (evt.keyCode == 38)
38は↑キーを表します。
else if (evt.keyCode == 40)
40は↓キーを表します。
function onKeyUp(evt) {
キーが離されたときに実行される関数の定義です。
document.onkeydown = onKeyDown;
onKeyDownプロパティに、キーが押されたときに実行される関数を代入します。
documentは、現在表示されているWebページ全体を表すオブジェクトです。
document.onkeyup = onKeyUp;
onKeyUpプロパティに、キーが離されたときに実行される関数を代入します。

練習問題

アニメーションの停止

setInterval()関数の戻り値を、clearInterval()関数の引数に与えて実行することによって、 アニメーションを停止することができます。

var id = setInterval(draw, 10); // アニメーション開始
clearInterval(id); // アニメーション停止

数学関数

Math.random()
乱数
0.0から1.0までの乱数がvalに代入されます。
var val = Math.random();
20.0から30.0までの乱数がvalに代入されます。
var val = Math.random()*10.0 + 20.0;
0から10までの乱数(整数)がvalに代入されます。
var val = Math.floor(10*Math.random());

参考


Prev | Next
index | home
abetmhr@gmail.com