亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        一個不錯的html5 canvas多層點擊事件監(jiān)聽實例

        字號:


            最近寫一個html5的游戲框架。今天寫到一個多層點擊事件的監(jiān)聽。覺得還是挺好玩的。于是把它從模塊中抽化出來了。以下代碼只是一些思想。具體實現(xiàn)肯定不是那么丑陋
            代碼如下:
            <!doctype html>
            <html lang=en>
            <head>
            <meta charset=utf-8>
            <title>document</title>
            <style type=text/css>
            .box > canvas {
            position: absolute;
            }
            </style>
            </head>
            <body>
            <div class=box>
            <canvas id=layer1 width=200 height=200></canvas>
            <canvas id=layer2 width=500 height=500></canvas>
            </div>
            <script type=text/javascript>
            function getrect(obj) {
            var x1 = obj.offsetleft;
            var y1 = obj.offsettop;
            var x2 = x1+obj.offsetwidth;
            var y2 = y1+obj.offsetheight;
            return {
            x1: x1,
            y1: y1,
            x2: x2,
            y2: y2
            };
            }
            function inside(x, y, rect) {
            if(x>rect.x1 && x<rect.x2 && y>rect.y1 && y<rect.y2) {
            return true;
            }
            else {
            return false;
            }
            }
            var trigger = {};
            trigger.list = [];
            trigger.listen = function() {
            var list = trigger.list;
            document.addeventlistener('click',function(evt) {
            for(var i=0; i<list.length; ++i) {
            list[i](evt);
            }
            });
            };
            trigger.listen();
            var l1 = document.getelementbyid('layer1');
            var l2 = document.getelementbyid('layer2');
            var dl1 = function(evt) {
            if(inside(evt.clientx, evt.clienty, getrect(l1))) {
            console.log('click');
            }
            }
            trigger.list.push(dl1);
            var dl2 = function(evt) {
            if(inside(evt.clientx, evt.clienty, getrect(l2))) {
            console.log('click2');
            }
            }
            trigger.list.push(dl2);
            </script>
            </body>
            </html>