Pixi.js: [v4.4.0] El evento de clic de un Sprite se envía incluso si un elemento DOM está arriba

Creado en 27 feb. 2017  ·  24Comentarios  ·  Fuente: pixijs/pixi.js

Oye !

Desde 4.4.0, observé que cuando hago clic en un elemento DOM que está encima de un sprite en el lienzo del pixi. El evento de clic del sprite aún se activa.

Hice un ejemplo rápido aquí:
v4.4.0
https://jsfiddle.net/ku55deL6/5/

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

¡Y gracias chicos por su increíble trabajo!

💾 v4.x (Legacy) 🕷 Bug

Comentario más útil

Ojalá mi aplicación use mucho esta situación y, desafortunadamente, esto me causa muchos errores ...

Todos 24 comentarios

Gracias por tu solución. Pero el problema no está completamente resuelto.

Si hace clic varias veces en un elemento DOM encima de un Sprite, puedo reproducir el problema.

Ejemplo con v4.4.1: https://jsfiddle.net/ku55deL6/9/

Agradable :) ¡la aventura continúa!

De acuerdo, https://github.com/pixijs/pixi.js/pull/3800 debería solucionar otro problema que estaba causando esto.

@andrewstart ¿ podrías verificar ese violín con tu compilación?

Sí, funciona. No importa cuántas veces haga clic en el banner amarillo, el conejito se queda quieto.

¡Hola chicos!

Probé con la versión 4.4.2 y parece que todavía no está arreglado para cada situación ... si tengo dos sprites en el mismo contenedor, funciona bien, pero si los sprites están en contenedores diferentes, este problema aún ocurre.

Vea esto: https://jsfiddle.net/FNevesFMQ/uwx24bm8/

En este punto, creo que estás introduciendo errores en el código para que funcione para mí 😛
Tendré la oportunidad de echarle un vistazo a esto este fin de semana. Sé que tenemos pruebas unitarias para exigir que no se obtengan eventos de puntero para los sprites que se superponen, así que tendré que investigar por qué diferentes contenedores cambian eso.

Ojalá mi aplicación use mucho esta situación y, desafortunadamente, esto me causa muchos errores ...

Tengo este problema resuelto con https://d157l7jdn8e5sf.cloudfront.net/fix-interaction-issues/pixi.js , pero probablemente sea una buena idea que lo use para ver si hay algún otro problema que no podamos. no sé.

El parche no me funcionó.
El caso es el siguiente (móvil, safari):

  1. hay 2 contenedores, ambos interactivos y superpuestos entre sí
  2. cuando hago clic en el controlador de un clic más alto también se activa en el inferior

@hazardsoft Actualmente tenemos pruebas

    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)

En las pruebas, item1 y item2 superponen, con item1 encima de item2 . ¿En qué se diferencia tu configuración? ¿Podrías proporcionar un violín / bolígrafo?

@andrewstart , ¿dónde puedo llevar pixi.js con tus arreglos? Entonces puedo verificarlos contra mi caso.

Lo siento, pero aún no está arreglado. Para el ejemplo que di antes de que funcione, pero en mi aplicación aún es posible hacer clic en los elementos que están debajo del elemento en el que se hizo clic.

Por el momento, no entendí cuál es la condición para que eso ocurra.

Lo mismo para mí, mi caso aún no está arreglado. Intentará preparar jsfiddle.

Gracias @hazardsoft , un violín es definitivamente la mejor manera de verificar las correcciones.

@bigtimebuddy, más trabajo para ustedes, muchachos :) Estoy realmente sorprendido de que estén resolviendo problemas de interacción, parece una pesadilla.

Aquí, lo encontré: https://jsfiddle.net/FNevesFMQ/uwx24bm8/

Si la interacción se establece en Sprite, funciona bien, pero si se asigna a un contenedor, el comportamiento es incorrecto y es posible hacer clic en todos los elementos al mismo tiempo.

Esto se solucionará (finalmente) con https://github.com/pixijs/pixi.js/pull/3877

Algunos problemas más en Pixi 4.4.4 con el evento mouseup

1- https://jsfiddle.net/8qtz73hf/ (funciona con mousedown)
2- https://jsfiddle.net/sbxoya8x/ (no funciona con mouseup)

Parece un efecto secundario de adjuntar oyentes de mouseup a la ventana, para asegurarnos de que podamos enviar eventos mouseupoutside si el mouse está fuera del lienzo (o bloqueado por otro div). Supongo que tendremos que inspeccionar el objetivo del evento, en ese caso, para asegurarnos de que sea el lienzo y no otro elemento.

¿Es el mismo número del # 3466?
¿Debería abrir una nueva edición para esto?

No, no debería ser necesario. He estado bastante ocupado en el trabajo, por lo que todavía no he tenido la oportunidad de arreglarlo.

Este hilo se ha bloqueado automáticamente ya que no ha habido ninguna actividad reciente después de su cierre. Abra un nuevo problema para errores relacionados.

¿Fue útil esta página
0 / 5 - 0 calificaciones