Wie würde man programmgesteuerte Trigger-/Mausereignisse in Matter.js hinzufügen? Ich habe ein paar Kollisionsereignisse für die Engine eingerichtet, kann aber kein mouseup-Ereignis auslösen, das die aktuelle Ziehaktion stoppt. Ich habe verschiedene Kombinationen aus Targeting des Canvas-Elements, der Maus/Maus-Constraint und des nicht-statischen Körpers ausprobiert.Auslösen von Maus-/Berührungsereignissen in Matter.js
Antwort
Es stellte sich heraus, dass ich das Matter.Mouse-Modul falsch konfiguriert hatte und die Mauseingabe neu zuordnete, die bereits in MouseConstraint festgelegt wurde. Die folgenden Arbeiten in Bezug auf meine ursprüngliche Frage:
Matter.mouseConstraint.mouse.mouseup(event);
Wenn Sie, wie ich, kamen hierher, um herauszufinden, wie auf einem Matter.js Körper Objekt klicken zu können, lassen Sie mich Ihnen eine Möglichkeit geben. Mein Ziel in meinem Projekt war es, meinen Rechteck-Objekten einige Attribute zuzuordnen und eine Funktion aufzurufen, als darauf geklickt wurde.
Das erste, was zu tun war, zwischen Verschieben und Klickens zu unterscheiden, also schrieb ich (mit jQuery):
$("body").on("mousedown", function(e){
mouseX1 = e.pageX;
mouseY1 = e.pageY;
});
$("body").on("mouseup", function(e){
mouseX2 = e.pageX;
mouseY2 = e.pageY;
if((mouseX1 == mouseX2) && (mouseY1 == mouseY2)){
//alert("click!\n" + mouseX2 + " " + mouseY2 +"\n");
var bodiesUnder = Matter.Query.point(books, { x: mouseX2, y: mouseY2 });
//alert("click!\n" + mouseX2 + " " + mouseY2 +"\n");
if (bodiesUnder.length > 0) {
var bodyToClick = bodiesUnder[0];
alert(bodyToClick.title2);
}
}
});
Dies wurde erreicht, wenn für "mouseup" zu hören und zu fragen, ob ((mouseX1 == mouseX2) & & (mouseY1 == mouseY2)).
Zweitens - der saftige Teil - Erstellen Sie ein Var-Array, um die Objekte oder "Körper" zu halten, die wir unter der Maus ausgraben werden. Zum Glück gibt es diese Funktion:
var bodiesUnder = Matter.Query.point(books, { x: mouseX2, y: mouseY2 });
Für das erste Element in hier trat ich in „Bücher“. Für Sie muss dies der Name eines Arrays sein, in das Sie all Ihre Objekte oder "Körper" eingefügt haben. Wenn Sie sie nicht in einem Array haben, ist es nicht schwer, sie alle in werfen, etwa so:
var books = [book1, book2, book3];
Sobald das alles fertig war, konnte ich alarmieren (book1.title2) zu sehen, was die Titel dieses Buches (Körper) ist. Meine Körper wurden wie folgt codiert:
var book2 = Bodies.rectangle(390, 200, 66, 70, {
render : {
sprite : {
texture: "img/tradingIcon.jpg"
}
},
restitution : 0.3,
title1 : 'Vanessa and Terry',
title2 : 'Trading'
});
Hoffe, dass hilft! Dieser hatte mich für einen ganzen Tag aufgehängt.
- 1. Kamera drehen in Matter.js
- 2. Deaktivieren der Schwerkraft in Matter.js
- 3. Matter.js berechnende Kraft benötigt
- 4. Matter.js Farben ändern
- 5. Matter.js Kollision zwischen verschiedenen Composites deaktivieren
- 6. Matter.js Körper ohne Rotation um seine Mitte
- 7. Sprite Bild erscheint nicht auf matter.js
- 8. Auslösen von Formularvalidatoren in angular2
- 9. Auslösen von Problemen in Z3
- 10. Deaktivieren der Schwerkraft für ein bestimmtes Objekt in Matter.js
- 11. Erneutes Auslösen von
- 12. Auslösen von fluffy.js
- 13. Auslösen von Instanzmethoden durch Auslösen der übergeordneten Methode
- 14. Ereignis von Objekt in benutzerdefinierter Auflistungsklasse auslösen
- 15. Auslösen von benutzerdefinierten Funktionen in Django Admin
- 16. Auslösen von Ausnahmen in ASP.NET C#
- 17. Auslösen von Build-Informationen in untergeordneten Job
- 18. Auslösen von Alarmen mit Validierungsbedarf in Shiny?
- 19. Auslösen von Keydown auf Plus.Google.com
- 20. Auslösen von CPLEX mit Matlab
- 21. Auslösen von Kill durch Subprozess
- 22. Auslösen Hintergrundaufgabe in UWP
- 23. Auslösen ausgewählter Regeln in Drool
- 24. Auslösen eines JS in JS?
- 25. Auslösen mehrerer Methoden in Vue.js
- 26. Verwenden von Variablen in einer Datei zum Auslösen von Ereignissen
- 27. Auslösen von Ausnahmen von einem Konstruktor in. NET
- 28. Verwenden von Hibernate zum Auslösen von Ereignissen in Spring Integration
- 29. Hintergrund-Task in UWP auslösen
- 30. Ondragstart nicht in Firefox auslösen