校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 一個不錯的HTML5 Canvas多層點擊事件監聽實例

一個不錯的HTML5 Canvas多層點擊事件監聽實例

熱門標簽:智能芯電話機器人 臨海地圖標注app 地圖標注柱狀圖 百度地圖標注為什么總是封號 小朱地圖標注 400開頭的電話好申請不 怎么做百度地圖標注 咸陽穩定外呼系統軟件 四川移動電銷外呼客戶管理系統
最近寫一個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>

標簽:平頂山 公主嶺 山南 平涼 黃石 陜西 南平 黃石

巨人網絡通訊聲明:本文標題《一個不錯的HTML5 Canvas多層點擊事件監聽實例》,本文關鍵詞  一個,不,錯的,HTML5,Canvas,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《一個不錯的HTML5 Canvas多層點擊事件監聽實例》相關的同類信息!
  • 本頁收集關于一個不錯的HTML5 Canvas多層點擊事件監聽實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 余江县| 荣昌县| 英吉沙县| 霸州市| 平乐县| 永兴县| 阿拉善右旗| 黄石市| 塘沽区| 若羌县| 汉寿县| 大连市| 广汉市| 延津县| 逊克县| 康平县| 南京市| 桃园县| 德兴市| 尼木县| 梁山县| 琼海市| 易门县| 温宿县| 马龙县| 醴陵市| 望城县| 乌拉特前旗| 道真| 兴文县| 黑山县| 延边| 江陵县| 绥化市| 湘潭县| 新建县| 嘉祥县| 南康市| 宁海县| 汽车| 房产|