Иногда нам нужно, чтобы этот экранный объект отображался в определенном порядке, чтобы сохранить z-index.
было бы хорошо, если бы у нас был способ выбрать порядок рисованных дочерних элементов, даже с помощью метода сортировки или путем разрешения отдельного метода повторения для отдельных объектов DisplayObject, чтобы разработчик мог создавать упорядоченный список, перебирать объекты и отображать их .
Порядок объектов в массиве children
- это порядок, в котором они будут отображаться. Это означает, что последний в массиве будет отображаться «сверху».
теперь чувствую себя немножко тупым xD
при чтении исходного кода я увидел связанный список в renderDisplayObject и подумал, что в этом выпуске нет массива stage.children ....
неважно, он отлично работает с stage.children sort :)
кстати, производительность 1.3.0 просто потрясающая! Я заканчиваю небольшой код для тестирования материалов WebGL на cocoonjs
благодарю вас :)
Не проблема, рад, что PIXI работает для вас!
var mapContainer = new PIXI.DisplayObjectContainer(),
unitsContainer = new PIXI.DisplayObjectContainer(),
menuContainer = new PIXI.DisplayObjectContainer();
mapContainer.zIndex = 5;
unitsContainer.zIndex = 10;
menuContainer.zIndex = 20;
/* adding children, no matter in which order */
stage.addChild(mapContainer);
stage.addChild(menuContainer);
stage.addChild(unitsContainer);
/* call this function whenever you added a new layer/container */
stage.updateLayersOrder = function () {
stage.children.sort(function(a,b) {
a.zIndex = a.zIndex || 0;
b.zIndex = b.zIndex || 0;
return b.zIndex - a.zIndex
});
};
stage.updateLayersOrder();
Дочерний массив: readonly
@glebmachine не означает, что вы не можете вызвать "сортировку"
@tengotengo Спасибо! Ваше решение простое, но элегантное.
Действительно ли решение @tengotengo является окончательным решением для этого? Мне кажется, что возможность изменить z-index является основной функцией. Представьте себе, что в изометрической игре, где в зависимости от вашей оси Y один спрайт может рассматриваться позади или перед другим спрайтом. Выполнение z-index - традиционный способ справиться с этим, и в этом случае вы просто сопоставите нижнюю позицию y спрайтов с их z-index и готово. Сейчас я сделаю хак сортировки, но, похоже, у этого должно быть официальное решение.
@bluefeet Взгляните на https://github.com/pixijs/pixi-display
Я думаю, это даст вам необходимую функциональность
Если вы ищете эту функцию в 2017 году; в Pixi это реализовано как zOrder.
@loadedsith pixi-display обновлен до последней версии, переписан на TS, и на этой неделе выйдет огромный патч с множеством примеров.
Этот поток был автоматически заблокирован, поскольку после его закрытия в последнее время не было никаких действий. Пожалуйста, откройте новую проблему для связанных ошибок.
Самый полезный комментарий