一个不错的HTML5 Canvas多层点击事件监听实例


Posted in HTML / CSS onApril 29, 2014

最近写一个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 && 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>
HTML / CSS 相关文章推荐
CSS3 透明色 RGBA使用介绍
Aug 06 HTML / CSS
CSS3之多背景background使用示例
Oct 18 HTML / CSS
CSS3中媒体查询结合rem布局适配手机屏幕
Jun 10 HTML / CSS
使用CSS3制作版头动画效果
Dec 24 HTML / CSS
使用CSS实现弹性视频html5案例实践
Dec 26 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
Jun 08 HTML / CSS
html5版canvas自由拼图实例
Oct 15 HTML / CSS
浅析移动设备HTML5页面布局
Dec 01 HTML / CSS
AmazeUI 加载进度条的实现示例
Aug 20 HTML / CSS
AmazeUI 按钮交互的实现示例
Aug 24 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
Mar 09 HTML / CSS
六个好看实用的 HTML + CSS 后台登录入口页面
Apr 28 HTML / CSS
HTML5中5个简单实用的API
Apr 28 #HTML / CSS
会走动的图形html5时钟示例
Apr 27 #HTML / CSS
html5定位并在百度地图上显示的示例
Apr 27 #HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
Apr 23 #HTML / CSS
HTML5的download属性详细介绍和使用实例
Apr 23 #HTML / CSS
HTML5里的placeholder属性使用实例和美化显示效果的方法
Apr 23 #HTML / CSS
HTML5的hidden属性兼容老浏览器的方法
Apr 23 #HTML / CSS
You might like
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
js select option对象小结
2013/12/20 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
Python中super的用法实例
2015/05/28 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
基于Python解密仿射密码
2019/10/21 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
Django如何实现防止XSS攻击
2020/10/13 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
Html5之title吸顶功能
2018/06/04 HTML / CSS
Java语言程序设计测试题选择题部分
2014/04/03 面试题
教师自荐信
2013/12/10 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
法律进企业活动方案
2014/03/04 职场文书
大型公益活动策划方案
2014/08/20 职场文书
五心教育心得体会
2014/09/04 职场文书
买房协议书范本
2014/10/23 职场文书
运动会表扬稿范文
2015/05/05 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python