Pixi.js: [v4.4.0] O evento de clique de um Sprite é enviado mesmo se um elemento DOM estiver acima

Criado em 27 fev. 2017  ·  24Comentários  ·  Fonte: pixijs/pixi.js

Ei !

Desde o 4.4.0, observei isso quando clico em um elemento DOM que está acima de um sprite na tela do pixi. O evento click do sprite ainda é disparado.

Fiz um exemplo rápido aqui:
v4.4.0
https://jsfiddle.net/ku55deL6/5/

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

E obrigado pessoal pelo seu trabalho incrível!

💾 v4.x (Legacy) 🕷 Bug

Comentários muito úteis

Quem me dera 😛 meu aplicativo usa muito essa situação e, infelizmente, isso me causa muitos bugs.

Todos 24 comentários

Obrigado por sua correção. Mas o problema não está completamente resolvido.

Se você clicar várias vezes em um elemento DOM acima de um Sprite, posso reproduzir o problema.

Exemplo com v4.4.1: https://jsfiddle.net/ku55deL6/9/

Legal :) a aventura continua!

Ok, https://github.com/pixijs/pixi.js/pull/3800 deve corrigir outro problema que estava causando isso.

@andrewstart você poderia verificar esse problema com sua construção?

Sim, funciona. Não importa quantas vezes eu clique no banner amarelo, o coelho permanece parado.

Ei pessoal!

Tentei com a versão 4.4.2 e parece que ainda não está consertado para todas as situações .. se eu tiver dois sprites no mesmo contêiner, funciona bem, mas se os sprites estiverem em contêineres diferentes, esse problema ainda ocorre.

Veja isto: https://jsfiddle.net/FNevesFMQ/uwx24bm8/

Neste ponto, acho que você está introduzindo erros no código para fazê-lo funcionar para mim 😛
Terei a chance de dar uma olhada nisso neste fim de semana. Eu sei que temos testes de unidade para garantir a não obtenção de eventos de ponteiro para sprites que estão se sobrepondo, então terei que investigar por que diferentes containers mudam isso.

Quem me dera 😛 meu aplicativo usa muito essa situação e, infelizmente, isso me causa muitos bugs.

Resolvi esse problema com https://d157l7jdn8e5sf.cloudfront.net/fix-interaction-issues/pixi.js , mas provavelmente é uma boa ideia usá-lo para ver se há algum outro problema que não tenhamos. não sei sobre.

O patch não funcionou para mim.
O caso é o seguinte (celular, safari):

  1. existem 2 contêineres, ambos interativos e sobrepostos
  2. quando eu clico na parte superior, o manipulador de um clique é disparado na parte inferior também

@hazardsoft Atualmente,

    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)

Nos testes, item1 e item2 sobrepõem, com item1 sendo sobre item2 . Como sua configuração é diferente? Você poderia fornecer um violino / caneta?

@andrewstart , onde posso tirar pixi.js com suas correções? Para poder verificá-los em relação ao meu caso

Desculpe, mas ainda não foi corrigido. Para o exemplo que dei antes de funcionar, mas no meu aplicativo ainda é possível clicar em itens que estão sob o item clicado.

No momento não entendia qual a condição para que isso ocorresse ..

O mesmo para mim, meu caso ainda não resolvido. Vou tentar preparar o jsfiddle.

Obrigado @hazardsoft , um violino é definitivamente a melhor maneira de verificarmos as correções.

@bigtimebuddy mais trabalho para vocês, pessoal :) Estou seriamente surpreso que vocês estejam resolvendo problemas de interação, parece um pesadelo.

Aqui, encontrei: https://jsfiddle.net/FNevesFMQ/uwx24bm8/

Se a interação for definida como Sprite, ela funcionará bem, mas se for atribuída a um container, o comportamento está errado e é possível clicar em todos os itens ao mesmo tempo.

Isso será corrigido (finalmente) com https://github.com/pixijs/pixi.js/pull/3877

Mais alguns problemas no Pixi 4.4.4 com evento mouseup

1- https://jsfiddle.net/8qtz73hf/ (funciona com mousedown)
2- https://jsfiddle.net/sbxoya8x/ (não funciona com mouseup)

Parece um efeito colateral de anexar ouvintes de mouseup à janela, para garantir que possamos enviar mouseupoutside eventos se o mouse estiver fora da tela (ou bloqueado por outro div). Acho que teremos que inspecionar o destino do evento, nesse caso, para garantir que seja a tela e não outro elemento.

é o mesmo problema de # 3466?
Devo abrir uma nova edição para isso?

Não, você não deveria precisar. Tenho estado muito ocupado no trabalho, por isso ainda não tive a chance de consertar.

Este tópico foi bloqueado automaticamente, pois não houve nenhuma atividade recente depois que foi fechado. Abra um novo problema para bugs relacionados.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

sntiagomoreno picture sntiagomoreno  ·  3Comentários

SebastienFPRousseau picture SebastienFPRousseau  ·  3Comentários

softshape picture softshape  ·  3Comentários

distinctdan picture distinctdan  ·  3Comentários

neciszhang picture neciszhang  ·  3Comentários