一个不错的HTML5 Canvas多层点击事件监听实例
导读:收集整理的这篇文章主要介绍了一个不错的HTML5 Canvas多层点击事件监听实例,觉得挺不错的,现在分享给大家,也给大家做个参考。 最近写一个HTML5的游戏框架。今天写到一个多层点击事件的监听。觉得还是挺好玩的。于是把它从模块...
收集整理的这篇文章主要介绍了一个不错的HTML5 Canvas多层点击事件监听实例,觉得挺不错的,现在分享给大家,也给大家做个参考。 最近写一个HTML5的游戏框架。今天写到一个多层点击事件的监听。觉得还是挺好玩的。于是把它从模块中抽化出来了。以下代码只是一些思想。具体实现肯定不是那么丑陋 复制代码代码如下:
!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 & & xrect.x2 & & y> rect.y1 & & yrect.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; ilist.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>
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 一个不错的HTML5 Canvas多层点击事件监听实例
本文地址: https://pptw.com/jishu/585335.html