一个完整的鼠标与键盘事件演示代码如下:

Heim Web-Frontend H5-Tutorial Demobeispiel für HTML5 Canvas-Maus- und Tastaturereignisse. HTML5-Tutorial-Kenntnisse

Demobeispiel für HTML5 Canvas-Maus- und Tastaturereignisse. HTML5-Tutorial-Kenntnisse

May 16, 2016 pm 03:49 PM
canvas html5 键盘 鼠标

Demonstriert HTML5-Canvas-Mausereignisse, ruft Mauskoordinaten für das Canvas-Objekt ab und demonstriert Tastaturereignisse, um die Bewegung von Objekten auf dem Canvas über die Tastatur zu steuern.

Das Canvas-Objekt unterstützt alle JavaScript-Mausereignisse, einschließlich Mausklick (MouseClick), Mausdrücken (Mouse Down), Mausheben (Mouse Up) und Mausbewegung (Mouse Move). Es gibt zwei Möglichkeiten, eine Möglichkeit besteht darin, es über die API zu vervollständigen:

Kopieren Sie den Code
Der Code lautet wie folgt:

// Mausereignis
canvas.addEventListener("mousedown",doMouseDown,false);
canvas.addEventListener('mousemove', doMouseMove,false); 'mouseup ', doMouseUp, false);
Eine andere Möglichkeit wird in JavaScript als Anti-Muster bezeichnet:



Code kopierenDer Code lautet wie folgt:
canvas.onmousedown = function(e){
}
canvas.onmouseup = function(e){
}
canvas.onmousemove = function(e){
}

Erhalten Sie die Koordinaten der Maus auf dem Canvas-Objekt:
Da die Koordinaten der Maus auf dem Canvas kann nicht direkt im Mausereignis auf der Leinwand abgerufen werden. Der Abruf basiert daher auf den Koordinaten des gesamten
-Bildschirms. Daher wird die Mausposition über die Mausereignisse e.pageX und e.pageY ermittelt, und dann wird die relative Position des Canvas-Objekts relativ zum Bildschirm über
Canvas.getBoundingClientRect() und die Koordinaten der Maus ermittelt im Canvas werden durch Berechnen von

erhalten, der Code lautet wie folgt:


Code kopieren Der Der Code lautet wie folgt:
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)
}


Tastaturereignisse:
HTML5 Canvas selbst unterstützt keine Überwachung und Erfassung von Tastaturereignissen. Es gibt zwei häufig verwendete Methoden, um dieses Problem zu lösen:

1: Implementieren Sie die Überwachung und Verarbeitung von Canvas-Tastaturereignissen über Windows-Objekte
//. Tastenereignis – Fenster als Objekt verwenden
window.addEventListener('keydown', doKeyDown, true);

Zweitens: Implementieren Sie Tastaturereignisunterstützung, indem Sie andere DOM-Elemente hinzufügen, die Tastaturereignisse auf dem Canvas-Objekt unterstützen



Code kopierenDer Code lautet wie folgt:
// key event - DOM-Element als Objekt verwenden
canvas.addEventListener('keydown', doKeyDown,true); 🎜>

wobei tabindex ein HTML5-DOM-Element ist und Tastaturereignisse unterstützt.
Demo, ein rechteckiger Block, der sich je nach Tastatur nach oben, unten, links und rechts bewegen kann:

Ein vollständiger Demonstrationscode für Maus- und Tastaturereignisse lautet wie folgt:




Code kopieren
Der Code lautet wie folgt:

var tempContext = null; // globale Variable 2D-Kontext
var gestartet = 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 wird nicht unterstützt. Bitte installieren Sie einen HTML5-kompatiblen Browser.");
zurück;
}
// 2D-Kontext der Leinwand abrufen und Rechteck zeichnen
tempContext = canvas.getContext("2d");
tempContext.fillStyle="blue";
x = canvas.width/2;
y = canvas.height/2;
tempContext.fillRect(x, y, 80, 40);
// Schlüsselereignis – DOM-Element als Objekt verwenden
canvas.addEventListener('keydown', doKeyDown, true);
canvas.focus();
// Tastenereignis – Fenster als Objekt verwenden
window.addEventListener('keydown', doKeyDown, true);
// Mausereignis
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) { // Aufwärtspfeil und W
clearCanvas();
y = y - 10;
tempContext.fillRect(x, y, 80, 40);
e.preventDefault();
}
if(keyID === 39 || keyID === 68) { // Rechtspfeil und D
clearCanvas();
x = x 10;
tempContext.fillRect(x, y, 80, 40);
e.preventDefault();
}
if(keyID === 40 || keyID === 83) { // Pfeil nach unten und S
clearCanvas();
y = y 10;
tempContext.fillRect(x, y, 80, 40);
e.preventDefault();
}
if(keyID === 37 || keyID === 65) { // Pfeil nach links und 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("Maus nach unten am Punkt( 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 (gestartet) {
tempContext.lineTo(loc.x, loc.y);
tempContext.Stroke();
}
}
function doMouseUp(event) {
console.log("mouse up now");
if (gestartet) {
doMouseMove(event);
started = false;
}
}

HTML部分:

复制代码
代码如下:


HTML Canvas Event Demo – Von Gloomy Fish


Drücken Sie die Tasten W, A, S, D, um zu bewegen





Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles