婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > HTML5 Canvas鼠標(biāo)與鍵盤事件demo示例

HTML5 Canvas鼠標(biāo)與鍵盤事件demo示例

熱門標(biāo)簽:地圖標(biāo)注柱狀圖 四川移動(dòng)電銷外呼客戶管理系統(tǒng) 百度地圖標(biāo)注為什么總是封號(hào) 咸陽穩(wěn)定外呼系統(tǒng)軟件 400開頭的電話好申請(qǐng)不 智能芯電話機(jī)器人 小朱地圖標(biāo)注 怎么做百度地圖標(biāo)注 臨海地圖標(biāo)注app
演示HTML5 Canvas鼠標(biāo)事件,獲取Canvas對(duì)象上的鼠標(biāo)坐標(biāo),演示鍵盤事件通過鍵盤控制Canvas上對(duì)象移動(dòng)。

Canvas對(duì)象支持所有的JavaScript的鼠標(biāo)事件,包括鼠標(biāo)點(diǎn)擊(MouseClick), 鼠標(biāo)按下(Mouse Down), 鼠標(biāo)抬起(Mouse Up),鼠標(biāo)移動(dòng)( Mouse Move)對(duì)Canvas添加鼠標(biāo)事件方式有兩種,一種方式是通過API來完成:

復(fù)制代碼
代碼如下:

// mouse event
canvas.addEventListener("mousedown",doMouseDown,false);
canvas.addEventListener('mousemove', doMouseMove,false);
canvas.addEventListener('mouseup', doMouseUp, false);
另外一種方式在JavaScript中稱為反模式:


復(fù)制代碼
代碼如下:

canvas.onmousedown = function(e){
}
canvas.onmouseup = function(e){
}
canvas.onmousemove = function(e){
}

獲取鼠標(biāo)在Canvas對(duì)象上坐標(biāo):
由于Canvas上鼠標(biāo)事件中不能直接獲取鼠標(biāo)在Canvas的坐標(biāo),所獲取的都是基于整個(gè)
屏幕的坐標(biāo)。所以通過鼠標(biāo)事件e.pageX與e.pageY來獲取鼠標(biāo)位置,然后通過
Canvas. getBoundingClientRect()來獲取Canvas對(duì)象相對(duì)屏幕的相對(duì)位置,通過計(jì)算

得到鼠標(biāo)在Canvas的坐標(biāo),代碼如下:

復(fù)制代碼
代碼如下:

function getPointOnCanvas(canvas, x, y) {
var bbox =canvas.getBoundingClientRect();
return { x: x- bbox.left *(canvas.width / bbox.width),
y:y - bbox.top * (canvas.height / bbox.height)
};
}

鍵盤事件:
HTML5 Canvas本身不支持鍵盤事件監(jiān)聽與獲取,常用的有兩種方法來解決這個(gè)問題:

一:通過windows對(duì)象來實(shí)現(xiàn)Canvas鍵盤事件監(jiān)聽與處理
// key event - use window as object
window.addEventListener('keydown', doKeyDown,true);

二:通過在Canvas對(duì)象上添加其它支持鍵盤事件的DOM元素實(shí)現(xiàn)鍵盤事件支持

復(fù)制代碼
代碼如下:

<canvas id="event_canvas"tabindex="0"></canvas>
// key event - use DOM element asobject
canvas.addEventListener('keydown', doKeyDown,true);
canvas.focus();

其中tabindex為HTML5 DOM元素,支持鍵盤事件。
演示,一個(gè)可以根據(jù)鍵盤上下左右移動(dòng)的矩形塊:
 
一個(gè)完整的鼠標(biāo)與鍵盤事件演示代碼如下:

復(fù)制代碼
代碼如下:

var tempContext = null; // global variable 2d context
var started = false;
var mText_canvas = null;
var x = 0, y =0;
window.add
window.onload = function() {
var canvas = document.getElementById("event_canvas");
console.log(canvas.parentNode.clientWidth);
canvas.width = canvas.parentNode.clientWidth;
canvas.height = canvas.parentNode.clientHeight;
if (!canvas.getContext) {
console.log("Canvas not supported. Please install a HTML5 compatible browser.");
return;
}
// get 2D context of canvas and draw rectangel
tempContext = canvas.getContext("2d");
tempContext.fillStyle="blue";
x = canvas.width/2;
y = canvas.height/2;
tempContext.fillRect(x, y, 80, 40);
// key event - use DOM element as object
canvas.addEventListener('keydown', doKeyDown, true);
canvas.focus();
// key event - use window as object
window.addEventListener('keydown', doKeyDown, true);
// mouse event
canvas.addEventListener("mousedown", doMouseDown, false);
canvas.addEventListener('mousemove', doMouseMove, false);
canvas.addEventListener('mouseup', doMouseUp, false);
}
function getPointOnCanvas(canvas, x, y) {
var bbox = canvas.getBoundingClientRect();
return { x: x - bbox.left * (canvas.width / bbox.width),
y: y - bbox.top * (canvas.height / bbox.height)
};
}
function doKeyDown(e) {
var keyID = e.keyCode ? e.keyCode :e.which;
if(keyID === 38 || keyID === 87) { // up arrow and W
clearCanvas();
y = y - 10;
tempContext.fillRect(x, y, 80, 40);
e.preventDefault();
}
if(keyID === 39 || keyID === 68) { // right arrow and D
clearCanvas();
x = x + 10;
tempContext.fillRect(x, y, 80, 40);
e.preventDefault();
}
if(keyID === 40 || keyID === 83) { // down arrow and S
clearCanvas();
y = y + 10;
tempContext.fillRect(x, y, 80, 40);
e.preventDefault();
}
if(keyID === 37 || keyID === 65) { // left arrow and A
clearCanvas();
x = x - 10;
tempContext.fillRect(x, y, 80, 40);
e.preventDefault();
}
}
function clearCanvas() {
tempContext.clearRect(0, 0, 500, 500)
}
function doMouseDown(event) {
var x = event.pageX;
var y = event.pageY;
var canvas = event.target;
var loc = getPointOnCanvas(canvas, x, y);
console.log("mouse down at point( x:" + loc.x + ", y:" + loc.y + ")");
tempContext.beginPath();
tempContext.moveTo(loc.x, loc.y);
started = true;
}
function doMouseMove(event) {
var x = event.pageX;
var y = event.pageY;
var canvas = event.target;
var loc = getPointOnCanvas(canvas, x, y);
if (started) {
tempContext.lineTo(loc.x, loc.y);
tempContext.stroke();
}
}
function doMouseUp(event) {
console.log("mouse up now");
if (started) {
doMouseMove(event);
started = false;
}
}

HTML部分:

復(fù)制代碼
代碼如下:

<body>
<h1>HTML Canvas Event Demo - By Gloomy Fish</h1>
<pre>Press W, A, S, D keys to move</pre>
<div id="my_painter">
<canvas id="event_canvas" tabindex="0"></canvas>
</div>
</body>

標(biāo)簽:平頂山 南平 陜西 黃石 公主嶺 黃石 山南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5 Canvas鼠標(biāo)與鍵盤事件demo示例》,本文關(guān)鍵詞  HTML5,Canvas,鼠標(biāo),與,鍵盤,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5 Canvas鼠標(biāo)與鍵盤事件demo示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML5 Canvas鼠標(biāo)與鍵盤事件demo示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    制服.丝袜.亚洲.另类.中文| 中文字幕在线一区| 日本亚洲天堂网| 欧美一区二区三区人| 久久99精品国产麻豆婷婷洗澡| 91精品国产全国免费观看 | 99re成人精品视频| 色综合天天狠狠| 亚洲午夜久久久久久久久电影院| 欧美怡红院视频| 毛片基地黄久久久久久天堂| 久久女同互慰一区二区三区| 91亚洲午夜精品久久久久久| 亚洲第一成人在线| 久久久久久久久一| 欧美精品在线一区二区三区| 国产亚洲欧美在线| 欧美色区777第一页| 久久精品国产**网站演员| 日本一区二区三区四区在线视频| 91久久精品日日躁夜夜躁欧美| 日韩vs国产vs欧美| 国产精品视频一二| 91.com在线观看| 国产精品成人一区二区艾草| 一本色道久久综合亚洲精品按摩| 日韩影院精彩在线| av电影一区二区| 精品国产乱码久久久久久夜甘婷婷 | 欧美国产日韩亚洲一区| 91浏览器入口在线观看| 狠狠色丁香久久婷婷综| 91无套直看片红桃| 国产午夜精品一区二区三区四区| 91行情网站电视在线观看高清版| 国产在线精品免费| 亚洲国产aⅴ天堂久久| 日本一区二区三区国色天香| 91精品国产乱| bt7086福利一区国产| 久99久精品视频免费观看| 亚洲一线二线三线视频| 中文字幕av一区 二区| 欧美一区二区三区免费视频| 色婷婷久久一区二区三区麻豆| 精品一区二区国语对白| 日一区二区三区| 一二三四社区欧美黄| 中文在线一区二区| 日韩精品一区二区三区中文不卡| 日韩制服丝袜先锋影音| 一区二区三区四区中文字幕| 欧美国产视频在线| 欧美精品一区二区三区四区| 欧美一区在线视频| 欧美三级三级三级爽爽爽| 91视频在线观看免费| 美国毛片一区二区三区| 日韩高清不卡在线| 国产69精品一区二区亚洲孕妇| 中文字幕一区二区三| 国产精品全国免费观看高清 | 亚洲成av人影院| 2021国产精品久久精品| 欧美色窝79yyyycom| 在线精品视频一区二区三四| 91天堂素人约啪| 99国产一区二区三精品乱码| 不卡高清视频专区| www.日韩精品| 99久久777色| 在线一区二区观看| 欧美在线视频你懂得| 欧美三区免费完整视频在线观看| 色狠狠色噜噜噜综合网| 亚洲国产精品天堂| 亚洲电影一级黄| 日韩电影在线观看电影| 午夜精品一区二区三区免费视频 | 欧美精品一区二区三区蜜桃视频| 午夜欧美2019年伦理| 日韩欧美你懂的| 精品国产精品一区二区夜夜嗨| 精品乱码亚洲一区二区不卡| 久久先锋影音av鲁色资源网| 国产欧美视频一区二区| 综合网在线视频| 亚洲专区一二三| 日本大胆欧美人术艺术动态| 精品一二三四在线| 成人一区二区三区视频| 日本久久精品电影| 91精品欧美一区二区三区综合在| xnxx国产精品| 国产精品国产成人国产三级 | 另类调教123区 | 亚洲在线视频网站| 99精品在线免费| 日韩免费一区二区| 久久亚洲二区三区| 中文字幕的久久| 亚洲精选视频在线| 石原莉奈在线亚洲二区| 国产毛片精品国产一区二区三区| 国产一区二区三区免费看| 97se亚洲国产综合自在线| 欧美日韩视频在线第一区| 精品久久久三级丝袜| 成人欧美一区二区三区小说| 亚洲18影院在线观看| 国产一区欧美日韩| 色国产精品一区在线观看| 欧美一区二区三区四区在线观看| 国产欧美日韩另类视频免费观看| 亚洲蜜臀av乱码久久精品| 免费人成精品欧美精品 | 成人中文字幕电影| 欧美主播一区二区三区| 欧美成va人片在线观看| 亚洲蜜桃精久久久久久久| 极品少妇一区二区| 欧美在线免费观看亚洲| 久久久久99精品一区| 欧美一级专区免费大片| 亚洲色图丝袜美腿| 国产麻豆一精品一av一免费 | 国产suv精品一区二区883| 欧美性生活影院| 国产精品欧美久久久久无广告 | 欧美不卡激情三级在线观看| 亚洲日本在线视频观看| 精品在线视频一区| 欧美日韩第一区日日骚| 亚洲图片激情小说| 国产精品综合在线视频| 欧美精品v国产精品v日韩精品| 亚洲人妖av一区二区| 国产美女主播视频一区| 日韩亚洲欧美一区二区三区| 亚洲aaa精品| 在线观看日韩av先锋影音电影院| 亚洲激情图片qvod| 18涩涩午夜精品.www| 国产91丝袜在线播放| 26uuu另类欧美| 精品国产网站在线观看| 午夜电影网一区| 欧美最新大片在线看| 亚洲婷婷国产精品电影人久久| 狠狠色综合播放一区二区| 欧美一区二区三区小说| 日韩精品五月天| 欧美日韩aaaaaa| 天堂在线一区二区| 欧美日韩久久不卡| 99re热这里只有精品免费视频| 在线观看一区二区视频| 一区二区三区在线播放| 91久久精品网| 亚洲综合偷拍欧美一区色| 色拍拍在线精品视频8848| 亚洲欧美日本韩国| 色综合久久九月婷婷色综合| 亚洲精品国产a久久久久久| 91在线视频网址| 一区二区三区四区蜜桃| 欧美视频你懂的| 午夜伊人狠狠久久| 91精品国产综合久久国产大片| 日韩中文欧美在线| 精品国产精品网麻豆系列 | 免费人成黄页网站在线一区二区| 欧美一区在线视频| 国产拍揄自揄精品视频麻豆| 丰满少妇在线播放bd日韩电影| 亚洲国产精品成人综合色在线婷婷 | 亚洲成人黄色小说| 666欧美在线视频| 欧美老肥妇做.爰bbww| 国产亚洲一区二区三区在线观看| 国产在线精品视频| **欧美大码日韩| 欧美系列日韩一区| 亚洲自拍偷拍综合| 欧美一区二区三区视频免费 | 国产精品99久久久久久宅男| 国产精品久久久久一区二区三区 | 欧美午夜精品久久久久久孕妇| 天堂午夜影视日韩欧美一区二区| 精品久久一区二区三区| 成人av电影在线| 亚洲午夜久久久久久久久久久| 日韩限制级电影在线观看| 春色校园综合激情亚洲| 亚洲一区二区影院| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 18欧美乱大交hd1984| 在线电影国产精品| 大陆成人av片| 日韩av成人高清|