it-swarm.com.de

Bewegen Sie den Mauszeiger an eine bestimmte Position?

Ich erstelle ein HTML5-Spiel und versuche, den Mauszeiger über ein bestimmtes Steuerelement eines bestimmten Ereignisses zu bewegen, damit das Bewegen in eine bestimmte Richtung immer zum gleichen Ergebnis führt. Ist das möglich?

115
Dennkster

Gute Frage. Dies fehlt wirklich etwas in der Javascript-Browser-API. Ich arbeite auch mit meinem Team an einem WebGL-Spiel, und wir brauchen dieses Feature. Ich habe ein Problem in Firefox 'Bugzilla aufgeschlagen, 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 von Nutzen sein.

Wenn Sie möchten, kommen Sie vorbei und hinterlassen Sie einen Kommentar mit Ihrem Feedback, und bewerten Sie das Problem:

https://bugzilla.mozilla.org/show_bug.cgi?id=630979

Vielen Dank!

64
dionyziz

Sie können den Mauszeiger nicht mit Javascript bewegen.

Denken Sie nur eine Sekunde über die Auswirkungen nach, wenn Sie könnten;)

  1. Benutzer denkt: "Hey, ich möchte auf diesen Link klicken"
  2. Javascript verschiebt den Mauszeiger auf einen anderen Link
  3. Der Benutzer klickt auf einen falschen Link und lädt versehentlich Malware herunter, die sein C-Laufwerk formatiert und seine Süßigkeiten verzehrt
169
  1. Führen Sie auf dem Clientcomputer einen kleinen Webserver aus. Kann eine kleine 100kb Sache sein. Ein Python/Perl-Skript usw.
  2. Fügen Sie eine kleine, vorkompilierte C ausführbare Datei, die die Maus bewegen kann.
  3. Führen Sie es als CGI-Skript über einen einfachen http-Aufruf, AJAX, aus - mit den Koordinaten, auf die Sie die Maus bewegen möchten, z. B .:

    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 gerecht eine Frage der Entschlossenheit - ob DU es schaffen wirst.

80
Alex Gray

Ich würde mir vorstellen, dass Sie den Mauszeiger auf einen bestimmten Bereich des Bildschirms platzieren könnten, wenn Sie nicht den echten (System-) Mauszeiger verwenden würden.

Zum Beispiel könnten Sie ein Bild erstellen, das anstelle Ihres Cursors agiert, ein Ereignis handhabt, das beim Erkennen des Eindringens der Maus in Ihre Szene den Stil des Systemcursors auf "Keine" setzt (sceneElement.style.cursor = 'none'), würde dann ein verstecktes Bildelement aufrufen, das als Cursor fungiert und auf der Grundlage einer vordefinierten Achsen-/Begrenzungsrahmen-Verschiebung an einer beliebigen Stelle in der Szene angezeigt wird.

Auf diese Weise würde Ihre Übersetzungsmethode Ihren Bildcursor unabhängig davon, wie Sie den tatsächlichen Cursor bewegt haben, dort belassen, wo Sie ihn benötigen.

edit: ein Beispiel in jsFiddle unter Verwendung einer Bilddarstellung und erzwungener Mausbewegung

69
Xaxis

Sie können die Position des Mauszeigers erkennen und dann die Webseite (mit der relativen Körperposition) verschieben, sodass sie über die Position zeigen, auf die 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'
    });        
});
41
Amish G

Sie können eine Maus nicht bewegen, aber sperren. Hinweis: Sie müssen requestPointerLock im Ereignis click 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

11
Dmitry Bosikov

Also, ich weiß, dass dies ein altes Thema ist, aber ich sage zuerst, dass es nicht möglich ist. Am nächsten ist es derzeit, die Maus an einer einzelnen Position zu fixieren und Änderungen in x und y zu verfolgen. Dieses Konzept wurde von - wie es aussieht - Chrome und Firefox übernommen. Es wird von dem verwaltet, was heißt Maussperreund das Schlagen der Flucht wird es brechen. Von meinem kurz Nachlesen, ich denke, die Idee ist, dass es die Maus an einer Stelle sperrt und Bewegungsereignisse meldet, die Click-and-Drag-Ereignissen ähnlich sind.

Hier ist die Release-Dokumentation:
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/

7
Codesmith

Sie können den Mauszeiger aus offensichtlichen Sicherheitsgründen nicht mit Javascript bewegen. Der beste Weg, um diesen Effekt zu erzielen, besteht darin, das Steuerelement unter dem Mauszeiger zu platzieren.

4
Sheavi

Könnte dies nicht einfach dadurch geschehen, dass die tatsächliche Position des Mauszeigers ermittelt und dann Sprite-/Szenen-Mausaktionen berechnet und kompensiert werden, die auf dieser Kompensation basieren?

Beispielsweise muss sich der Mauszeiger in der Mitte unten befinden, befindet sich jedoch oben links. verstecke den Cursor, verwende ein verschobenes Cursorbild. Verschieben Sie die Cursorbewegung und ordnen Sie die Mauseingabe so zu, dass sie den neu positionierten Cursorklicks entspricht. Wenn der Cursor tatsächlich auf den gewünschten Punkt trifft, entfernen Sie die Kompensation.

Haftungsausschluss, kein Spieleentwickler.

0
Eric Shoberg