Прерывания прокрутки переходов в D3.js

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

2
задан Nancy 9 April 2019 в 19:50
поделиться

1 ответ

Если вам нужно прервать переход, в d3-переходе есть метод для этого:

selection.interrupt();

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


Если это общая версия вашей функции для отображения элемента:

function show() {
  selectionToHide.attr("opacity",0);

  selectionToShow.transition()
     .attr("opacity",1);
}

Без использования selection.interrupt вы устанавливаете непрозрачность в ноль, а затем следующий тик любого перехода в прогресс продолжает обновлять непрозрачность и заканчивает выполнение перехода. Добавляя прерывание, мы избегаем этого. Вот обновленная скрипка .

Однако, есть другое решение - мы можем применить другой переход к элементам, которые мы не хотим показывать. Для этого мы просто заменим переход на новый:

function show() {
  selectionToHide.transition()
     .attr("opacity",0);

  selectionToShow.transition()
     .attr("opacity",1);
}

Это заменит существующие безымянные переходы (так как ваши не названы) и исчезнут элементы, вместо того, чтобы просто скрыть их все сразу. Вот скрипка этого. Конечно, если у вас много элементов, это можно уточнить, чтобы применить переход только к любым переходным элементам (не к тем, которые уже скрыты), чтобы уменьшить количество активных переходов.

Я не касался прокрутки, показанный круг должен иметь индекс, соответствующий отображаемому номеру, но кажется, что число не всегда соответствует позиции прокрутки, но это отдельная проблема [117 ]

0
ответ дан Andrew Reid 9 April 2019 в 19:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: