Pixi.js: [v4.4.0] Событие Click спрайта отправляется, даже если элемент DOM находится выше

Созданный на 27 февр. 2017  ·  24Комментарии  ·  Источник: pixijs/pixi.js

Привет !

Начиная с версии 4.4.0, я заметил, что когда я щелкаю элемент DOM, который находится над спрайтом на холсте pixi. Событие клика спрайта все еще запускается.

Я привел здесь быстрый пример:
v4.4.0
https://jsfiddle.net/ku55deL6/5/

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

И спасибо, ребята, за отличную работу!

💾 v4.x (Legacy) 🕷 Bug

Самый полезный комментарий

Я хочу, чтобы мое приложение часто использовало эту ситуацию, и, к сожалению, это вызывает у меня много ошибок.

Все 24 Комментарий

Спасибо за исправление. Но проблема не решена полностью.

Если вы нажмете несколько раз на элемент DOM над Sprite, я смогу воспроизвести проблему.

Пример с v4.4.1: https://jsfiddle.net/ku55deL6/9/

Приятно :) приключение продолжается!

Хорошо, https://github.com/pixijs/pixi.js/pull/3800 должен исправить другую проблему, которая вызвала это.

@andrewstart не могли бы вы проверить эту скрипку в своей сборке?

Ага, работает. Независимо от того, сколько раз я нажимаю на желтый баннер, кролик остается на месте.

Эй, ребята!

Я пробовал с версией 4.4.2, и кажется, что она все еще не исправлена ​​для каждой ситуации ... если у меня есть два спрайта в одном контейнере, он работает нормально, но если спрайты находятся в разных контейнерах, эта проблема все еще возникает.

Смотрите это: https://jsfiddle.net/FNevesFMQ/uwx24bm8/

На этом этапе я думаю, что вы скрываете ошибки в коде, чтобы заставить меня работать
У меня будет возможность взглянуть на это в эти выходные. Я знаю, что у нас есть модульные тесты, чтобы заставить не получать события указателя для перекрывающихся спрайтов, поэтому мне придется разобраться, почему разные контейнеры меняют это.

Я хочу, чтобы мое приложение часто использовало эту ситуацию, и, к сожалению, это вызывает у меня много ошибок.

Я решил эту проблему с помощью https://d157l7jdn8e5sf.cloudfront.net/fix-interaction-issues/pixi.js , но, вероятно, было бы неплохо, если бы вы использовали его, чтобы узнать, есть ли другие проблемы, которые мы не делаем. не знаю о.

Патч у меня не работал.
Кейс следующий (мобильный, сафари):

  1. есть 2 контейнера, оба интерактивные и перекрывающие друг друга
  2. когда я нажимаю самый высокий, обработчик одного клика запускается и в нижнем

@hazardsoft В настоящее время мы

    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)

В тестах item1 и item2 перекрываются, причем item1 находится поверх item2 . Чем отличается ваша установка? Не могли бы вы предоставить скрипку / ручку?

@andrewstart , где взять pixi.js с вашими исправлениями? Так что я могу проверить их на соответствие моему делу.

Он был только что выпущен на https://github.com/pixijs/pixi.js/releases/tag/v4.4.3.

Извините, но это еще не исправлено. В примере, который я привел до того, как он заработает, но в моем приложении все еще можно щелкать элементы, которые находятся под выбранным элементом.

На данный момент я не понимал, при каких условиях это происходит.

То же самое для меня, мой случай все еще не исправлен. Попробую подготовить jsfiddle.

Спасибо @hazardsoft , скрипка - определенно лучший способ проверить исправления.

@bigtimebuddy , ребята, еще поработайте :) Я серьезно удивился, что вы

Вот нашёл: https://jsfiddle.net/FNevesFMQ/uwx24bm8/

Если для взаимодействия установлено значение Sprite, оно работает нормально, но если оно назначено контейнеру, поведение неверно, и можно щелкнуть все элементы одновременно.

Это будет исправлено (наконец) с помощью https://github.com/pixijs/pixi.js/pull/3877

Еще несколько проблем в Pixi 4.4.4 с событием mouseup

1- https://jsfiddle.net/8qtz73hf/ (работает с mousedown)
2- https://jsfiddle.net/sbxoya8x/ (не работает с mouseup)

Похоже на побочный эффект присоединения слушателей mouseup к окну, чтобы гарантировать, что мы можем отправлять события mouseupoutside если мышь находится за пределами холста (или заблокирована другим div). Я предполагаю, что в этом случае нам придется проверить цель события, чтобы убедиться, что это холст, а не другой элемент.

это та же проблема с № 3466?
Должен ли я для этого открывать новый выпуск?

Нет, не нужно. Я был очень занят на работе, поэтому пока не успел починить.

Этот поток был автоматически заблокирован, поскольку после его закрытия в последнее время не было никаких действий. Пожалуйста, откройте новую проблему для связанных ошибок.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

courtneyvigo picture courtneyvigo  ·  3Комментарии

madroneropaulo picture madroneropaulo  ·  3Комментарии

zcr1 picture zcr1  ·  3Комментарии

SebastienFPRousseau picture SebastienFPRousseau  ·  3Комментарии

neciszhang picture neciszhang  ·  3Комментарии