animation

Foundation HTML5 Animation with JavaScriptの勉強

JavaScriptのアニメーションを勉強する

流し読みでやってみる。

CHAPTER 2 のMouse eventsをやってみる。

マウスイベントの取得

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Mouse Events</title>
<style>
#canvas {
    background: #000;
}
</style>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<script>
    window.onload = function () {
        var canvas = document.getElementById('canvas');

        function onMouseEvent (event) {
            console.log(event.type);
        }
        canvas.addEventListener('mousedown', onMouseEvent, false);
        canvas.addEventListener('mouseup', onMouseEvent, false);
        canvas.addEventListener('click', onMouseEvent, false);
        canvas.addEventListener('dblclick', onMouseEvent, false);
        canvas.addEventListener('mousewheel', onMouseEvent, false);
        canvas.addEventListener('mousemove', onMouseEvent, false);
        canvas.addEventListener('mouseover', onMouseEvent, false);
        canvas.addEventListener('mouseout', onMouseEvent, false);
    };
</script>
</body>
</html>

黒いエリアで各種マウスイベントが取得できるというソース。
取得できるイベントは以下になる。
取得結果はconsoleに出力されている。

  • mousedown
  • mouseup
  • click
  • dblclick
  • mousewheel
  • mousemove
  • mouseover
  • mouseout

マウスの座標を取得する

<!doctype html>
  <html>
   <head>
    <meta charset="utf-8">
    <title>Mouse Position</title>
    <link rel="stylesheet" href="style.css">
   </head>
   <body>
    <canvas id="canvas" width="400" height="400"></canvas>
    <script>
    var utils = {};
    utils.captureMouse = function (element) {
        var mouse = {x: 0, y: 0};
        element.addEventListener('mousemove', function (event) {
            var x, y;
            if (event.pageX || event.pageY) {
                x = event.pageX;
                y = event.pageY;
            } else {
                x = event.clientX + document.body.scrollLeft +
                document.documentElement.scrollLeft;
                y = event.clientY + document.body.scrollTop +
                document.documentElement.scrollTop;
            }
            x -= element.offsetLeft;
            y -= element.offsetTop;
            mouse.x = x;
            mouse.y = y;
        }, false);
        return mouse;
    };
    window.onload = function () {
        var canvas = document.getElementById('canvas'),
            mouse = utils.captureMouse(canvas);
            canvas.addEventListener('mousedown', function () { console.log("x: " + mouse.x + ", y: " + mouse.y);
        }, false);
    };
    </script>
   </body>
</html>