Pixi.js: [v4.4.0] Das Klickereignis eines Sprites wird gesendet, auch wenn sich oben ein DOM-Element befindet

Erstellt am 27. Feb. 2017  ·  24Kommentare  ·  Quelle: pixijs/pixi.js

Hallo !

Seit dem 4.4.0 habe ich das beobachtet, als ich auf ein DOM-Element geklickt habe, das sich über einem Sprite auf der Leinwand des Pixi befindet. Das Klickereignis des Sprites wird weiterhin ausgelöst.

Ich habe hier ein kurzes Beispiel gemacht:
v4.4.0
https://jsfiddle.net/ku55deL6/5/

v4.3.5
https://jsfiddle.net/ku55deL6/4/

Und danke Jungs für eure großartige Arbeit!

💾 v4.x (Legacy) 🕷 Bug

Hilfreichster Kommentar

Ich wünschte, meine App nutzt diese Situation sehr oft, und leider verursacht dies viele Fehler.

Alle 24 Kommentare

Vielen Dank für Ihre Lösung. Das Problem ist jedoch nicht vollständig behoben.

Wenn Sie mehrmals auf ein DOM-Element über einem Sprite klicken, kann ich das Problem reproduzieren.

Beispiel mit v4.4.1: https://jsfiddle.net/ku55deL6/9/

Schön :) das Abenteuer geht weiter!

Okay, https://github.com/pixijs/pixi.js/pull/3800 sollte ein anderes Problem beheben, das dies verursacht hat.

@andrewstart könntest du diese Geige mit deinem Build überprüfen?

Ja, es funktioniert. Egal wie oft ich auf das gelbe Banner klicke, der Hase bleibt stehen.

Hallo Leute!

Ich habe es mit Version 4.4.2 versucht und es scheint, dass es immer noch nicht für jede Situation behoben ist. Wenn ich zwei Sprites im selben Container habe, funktioniert es einwandfrei, aber wenn sich Sprites in verschiedenen Containern befinden, tritt dieses Problem immer noch auf.

Siehe dies: https://jsfiddle.net/FNevesFMQ/uwx24bm8/

An diesem Punkt denke ich, dass Sie Fehler in den Code schleichen, damit es für mich funktioniert 😛
Ich werde dieses Wochenende die Gelegenheit haben, einen Blick darauf zu werfen. Ich weiß, dass wir Unit-Tests haben, um zu erzwingen, dass Zeigerereignisse für überlappende Sprites nicht abgerufen werden. Deshalb muss ich untersuchen, warum verschiedene Container dies ändern.

Ich wünschte, meine App nutzt diese Situation sehr oft, und leider verursacht dies viele Fehler.

Ich habe dieses Problem mit https://d157l7jdn8e5sf.cloudfront.net/fix-interaction-issues/pixi.js behoben, aber es ist wahrscheinlich eine gute Idee, dass Sie es verwenden, um zu sehen, ob es andere Probleme gibt, die wir nicht haben. Ich weiß nicht.

Der Patch hat bei mir nicht funktioniert.
Der Fall ist der folgende (mobil, Safari):

  1. Es gibt 2 Container, die beide interaktiv sind und sich überlappen
  2. Wenn ich auf den höchsten klicke, wird der One-Click-Handler auch im unteren ausgelöst

@hazardsoft Wir haben derzeit Tests für die folgenden Bedingungen bestanden:

    Stage    (both interactive and non-interactive)
    /   \
   parent1  parent2   (together, both interactive and non-interactive)
      /       \  
    item1     item2   (always interactive)
    Stage    (both interactive and non-interactive)
        /    \  
    item1    item2   (always interactive)

In den Tests überlappen sich item1 und item2 , wobei item1 über item2 . Wie unterscheidet sich Ihr Setup? Könnten Sie eine Geige / einen Stift zur Verfügung stellen?

@andrewstart , wo kann ich pixi.js mit deinen Korrekturen aufnehmen? So kann ich sie anhand meines Falls überprüfen.

Entschuldigung, aber es ist noch nicht behoben. Für das Beispiel, das ich gegeben habe, bevor es funktioniert, aber in meiner App ist es immer noch möglich, auf Elemente zu klicken, die unter dem angeklickten Element stehen.

Im Moment habe ich nicht verstanden, welche Bedingung dafür vorliegt.

Das gleiche gilt für mich, mein Fall ist immer noch nicht behoben. Ich werde versuchen, jsfiddle vorzubereiten.

Vielen Dank an @hazardsoft , eine Geige ist definitiv der beste Weg für uns, um Korrekturen zu überprüfen.

@bigtimebuddy mehr Arbeit für euch, Leute :) Ich bin ernsthaft erstaunt, dass Sie Interaktionsprobleme lösen, es sieht aus wie ein Albtraum.

Hier fand es: https://jsfiddle.net/FNevesFMQ/uwx24bm8/

Wenn die Interaktion auf Sprite eingestellt ist, funktioniert sie einwandfrei. Wenn sie jedoch einem Container zugewiesen ist, ist das Verhalten falsch und es ist möglich, alle Elemente gleichzeitig anzuklicken.

Dies wird (endlich) mit https://github.com/pixijs/pixi.js/pull/3877 behoben

Einige weitere Probleme in Pixi 4.4.4 mit dem Mouseup-Ereignis

1- https://jsfiddle.net/8qtz73hf/ (funktioniert mit Mousedown)
2- https://jsfiddle.net/sbxoya8x/ (funktioniert nicht mit mouseup)

Sieht aus wie ein Nebeneffekt beim Anhängen von Mouseup-Listenern an das Fenster, um sicherzustellen, dass wir mouseupoutside Ereignisse senden können, wenn sich die Maus nicht auf der Leinwand befindet (oder von einem anderen Div blockiert wird). Ich denke, wir müssen in diesem Fall das Ziel des Ereignisses untersuchen, um sicherzustellen, dass es sich um die Leinwand und nicht um ein anderes Element handelt.

ist es die gleiche Ausgabe von # 3466?
Sollte ich dafür eine neue Ausgabe eröffnen müssen?

Nein, das solltest du nicht brauchen. Ich war ziemlich beschäftigt bei der Arbeit, weshalb ich noch keine Gelegenheit hatte, das Problem zu beheben.

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen keine Aktivität mehr stattgefunden hat. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen