Руководство по actionscript. часть 3, стр. 129
Контейнер. getCh i1dIndex(сущеетвующийРебенок2)):
Это означает: «Поместить ребенка существующийРебенок1 на глубину, которая в настоящий момент занята ребенком существующийРебенок2».
Стоит отметить, что, когда глубина объекта увеличивается на новую позицию с помощью метода setChildlndex ( ) (то есть объект перемещается выше), глубина всех объектов, находящихся между старой и новой позициями, уменьшается на 1, тем самым заполняя освободившуюся позицию в результате перемещения объекта. Таким образом, перемещенный объект появляется перед объектом, который раньше находился в указанной новой позиции. Например, продолжая работу над последней версией приложения GreetingApp (которая была показана на рис. 20.8), изменим позицию глубины объекта greet ing_txt с 0 на 2. До выполнения следующего кода позицию глубины 2 занимает объект circle.
setChildlndex(greeting_txt. getChildlndex(circle));
Когда объект greeting_txt перемещается в позицию глубины 2, позиции глубины объектов circle и triangle уменьшаются до 1 и 0 соответственно, поэтому объект greet ing txt отображается перед этими объектами. Результаты показаны на рис. 20.9.
В отличие от этого, когда глубина объекта уменьшается на новую позицию с помощью метода setChildlndex ( ) (то есть объект перемещается ниже), позиция глубины всех объектов, находящихся в новой позиции или выше ее, увеличивается на 1, тем самым освобождая пространство для нового объекта. Таким образом, перемещенный объект появляется позади объекта, который раньше находился в указанной новой позиции (как если бы объект был добавлен с помощью метода addChildAt ( ) ). Обратите внимание на важное различие между перемещением объекта на высокую глубину и перемещением объекта на низкую глубину.
Рис. 20.9. Перемещение текста вверх
Н®1
Объект, перемещенный на большую глубину, отображается перед объектом, который находился в целевой позиции, однако объект, перемещенный на меньшую глубину, отображается позади объекта, который находился в целевой позиции.
Например, продолжая работать над кодом, результаты выполнения которого показаны на рис. 20.9, изменим позицию глубины объекта rectc3Hal(l — это глубина, в настоящий момент занимаемая объектом circle):
setChildlndex(rect. getChi 1 dlndex(c»ircle)):
Когда объект rect перемещается в позицию глубины 1, позиции глубины объектов circle и greet ing txt увеличиваются до 2 и 3 соответственно, поэтому объект rect отображается позади этих объектов (как показано на рис. 20.10).
Чтобы поместить объект поверх всех объектов в данном контейнере, используйте следующий код:
контейнер. setChi1dlndexCсущеетвующийРебенок. контейнер. numChildren-1)
Например, следующий код помещает треугольник поверх всех дочерних объектов экземпляра класса GreetingApp (код используется в классе GreetingApp, поэтому объект контейнер в предыдущем выражении опускается и неявно преобразуется в this — текущий объект): setChi1dlndex(trianglе. numChildren-1); На рис. 20.11 показаны результаты выполнения кода.