В библиотеке PixiJS управление отображением объектов
происходит через два ключевых свойства: visible и
renderable. Оба влияют на визуализацию, однако имеют разные
механизмы действия и области применения.
visiblevisible — булевое свойство, определяющее, виден ли
объект на сцене.
booleantruevisible = false, объект
и все его потомки не будут отрисованы. При этом объекты остаются в
дереве сцены и продолжают участвовать в обработке событий, если это не
ограничено другими параметрами.Пример использования:
const sprite = new PIXI.Sprite(texture);
sprite.visible = false; // объект не отрисовывается
app.stage.addChild(sprite);
Особенности:
visible = false, все дочерние элементы автоматически
становятся невидимыми, даже если у них visible = true.pointerdown).renderablerenderable определяет, можно ли объект отрисовать на
рендере, независимо от visible.
booleantruerenderable = false,
объект не будет отправлен в графический процессор для отрисовки, даже
если visible = true.Пример:
const container = new PIXI.Container();
container.renderable = false; // все дети не будут отрисованы
Особенности:
renderable = false, дочерние элементы всё ещё могут иметь
renderable = true, но на практике рендеринг родителя
блокирует их видимость на экране.visible и
renderable| Свойство | Влияние на видимость | Наследование | Влияние на события | Использование |
|---|---|---|---|---|
visible |
Объект и его потомки невидимы | Да | Нет (объект по-прежнему реагирует) | Временное скрытие объектов |
renderable |
Объект не отрисовывается, но может быть видимым логически | Нет | Нет | Оптимизация рендеринга, отключение графики |
Ключевой момент: visible управляет логической
видимостью, тогда как renderable — только
графической.
На практике часто используют оба свойства для более гибкого контроля:
sprite.visible = true; // объект видим логически
sprite.renderable = false; // но не отправляется на рендер
Такой подход позволяет:
Для PIXI.Container свойства работают следующим образом:
visible — наследуется. Если контейнер невидим, все дети
также не видимы независимо от их значения visible.renderable — действует только на конкретный объект.
Дети с renderable = true могут быть отрисованы только если
контейнер тоже рендерится.Пример:
const container = new PIXI.Container();
const sprite = new PIXI.Sprite(texture);
container.visible = false; // скрывает весь контейнер
sprite.visible = true; // дочерний элемент логически видим, но не отображается
visible для временного скрытия объектов
без влияния на логику.renderable для отключения графической
нагрузки при необходимости оставить объект активным.visible у контейнеров перед
отладкой невидимых объектов.visible управляет логической
видимостью объектов и наследуется от родителей.renderable управляет только отрисовкой
и не наследуется напрямую.