Ich baue ein HTML5-Spiel und versuche, den Mauszeiger über ein bestimmtes Steuerelement auf ein bestimmtes Ereignis zu bewegen, damit das Bewegen in eine bestimmte Richtung immer das gleiche Ergebnis erzielt. Ist das möglich?
Ich baue ein HTML5-Spiel und versuche, den Mauszeiger über ein bestimmtes Steuerelement auf ein bestimmtes Ereignis zu bewegen, damit das Bewegen in eine bestimmte Richtung immer das gleiche Ergebnis erzielt. Ist das möglich?
Antworten:
Ich weiß, dass dies ein altes Thema ist, aber ich werde zuerst sagen, dass es nicht möglich ist. Das derzeit nächstgelegene ist, die Maus an einer einzelnen Position zu fixieren und Änderungen in x und y zu verfolgen. Dieses Konzept wurde - wie es aussieht - von Chrome und Firefox übernommen. Es wird von der sogenannten Maussperre verwaltet , und wenn Sie die Fluchttaste drücken , wird es zerstört. Nach meiner kurzen Lektüre besteht die Idee darin, die Maus an einer Stelle zu sperren und Bewegungsereignisse zu melden, die Click-and-Drag-Ereignissen ähneln.
Hier ist die
Versionsdokumentation: FireFox: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Chrome: http://www.chromium.org/developers/design-documents/mouse-lock
Und hier ist eine hübsche Demonstration: http://media.tojicode.com/q3bsp/
Sie können den Mauszeiger nicht mit Javascript verschieben.
Denken Sie nur eine Sekunde über die Auswirkungen nach, wenn Sie könnten;)
Führen Sie es als CGI-Skript über einen einfachen http-Aufruf, AJAX, aus - mit den Koordinaten, zu denen Sie die Maus bewegen möchten, z.
http://localhost:9876/cgi/mousemover?x=200&y=450
PS: Für jedes Problem gibt es Hunderte von Ausreden, warum und wie - es kann und sollte nicht - getan werden. Aber in diesem unendlichen Universum ist es wirklich nur eine Frage der Entschlossenheit - ob SIE wird es möglich machen.
Ich würde mir vorstellen, dass Sie den Mauszeiger auf einen bestimmten Bereich des Bildschirms setzen könnten, wenn Sie nicht den echten (System-) Mauszeiger verwenden würden.
Sie können beispielsweise ein Bild erstellen, das anstelle Ihres Cursors fungiert, ein Ereignis behandeln, das beim Erkennen des Mauszeigers in Ihrer Szene den Stil des Systemcursors auf "none" ( sceneElement.style.cursor = 'none'
) setzt und dann ein ausgeblendetes Bildelement aufruft als Cursor an einer beliebigen Stelle in der Szene, basierend auf einer vordefinierten Achsen- / Begrenzungsrahmenübersetzung.
Auf diese Weise behält Ihre Übersetzungsmethode unabhängig davon, wie Sie den realen Cursor bewegt haben, Ihren Bildcursor dort, wo Sie ihn benötigen.
Bearbeiten: Ein Beispiel in jsFiddle mit einer Bilddarstellung und erzwungener Mausbewegung
Gute Frage. Dies fehlt wirklich in der Javascript-Browser-API. Ich arbeite auch mit meinem Team an einem WebGL-Spiel, und wir brauchen diese Funktion. Ich habe ein Problem mit Firefox Bugzilla eröffnet, damit wir über die Möglichkeit sprechen können, eine API zu haben, die das Sperren von Mäusen ermöglicht. Dies wird für alle HTML5 / WebGL-Spieleentwickler nützlich sein.
Wenn Sie möchten, kommen Sie vorbei und hinterlassen Sie einen Kommentar mit Ihrem Feedback und stimmen Sie dem Problem zu:
https://bugzilla.mozilla.org/show_bug.cgi?id=630979
Vielen Dank!
Sie können die Position des Mauszeigers erkennen und dann die Webseite (mit relativer Körperposition) so verschieben, dass sie über dem Mausklick liegt, auf den sie klicken sollen.
Zum Beispiel können Sie diesen Code auf der aktuellen Seite in Ihrer Browserkonsole einfügen (und anschließend aktualisieren).
var upvote_position = $('#answer-12878316').position();
$('body').mousemove(function (event) {
$(this).css({
position: 'relative',
left: (event.pageX - upvote_position.left - 22) + 'px',
top: (event.pageY - upvote_position.top - 35) + 'px'
});
});
document.getElementByID('thingtoclick').click();
Sie können eine Maus nicht bewegen, sondern sperren. Hinweis: Sie müssen requestPointerLock im Klickereignis aufrufen.
Kleines Beispiel:
var canvas = document.getElementById('mycanvas');
canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock || canvas.webkitRequestPointerLock;
canvas.requestPointerLock();
Dokumentation und vollständiges Codebeispiel:
https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Sie können den Mauszeiger nicht mit Javascript bewegen, daher aus offensichtlichen Sicherheitsgründen. Der beste Weg, um diesen Effekt zu erzielen, besteht darin, das Steuerelement tatsächlich unter dem Mauszeiger zu platzieren.
Könnte dies nicht einfach dadurch erreicht werden, dass die tatsächliche Position des Mauszeigers ermittelt und dann Sprite- / Szenen-Mausaktionen basierend auf dieser Kompensation berechnet und kompensiert werden?
Zum Beispiel muss der Mauszeiger unten in der Mitte sein, aber er befindet sich oben links. Blenden Sie den Cursor aus und verwenden Sie ein verschobenes Cursorbild. Verschieben Sie die Cursorbewegung und ordnen Sie die Mauseingaben so zu, dass sie den neu positionierten Cursor-Sprite- (oder 'Steuerungs-') Klicks entsprechen. Wenn / wenn Grenzen erreicht werden, berechnen Sie neu. Wenn der Cursor tatsächlich den gewünschten Punkt erreicht, entfernen Sie die Kompensation.
Haftungsausschluss, kein Spieleentwickler.