Руководство по actionscript. часть 3, стр. 134
Для обращения к непосредственным детям контейнера (но не к правнукам или к любым другим детям-потомкам) используется инструкция цикла. Цикл обрабатывает каждую позицию глубины в контейнере. Внутри тела цикла мы обращаемся к каждому peбeнкyпoeгoпoзицииглyбины, иcпoльзyямeтoдэкзeмпляpagetChildAt ( ) класса DisplayObjectContainer. Следующий код демонстрирует общий подход; он отображает строковые значения всех объектов, содержащихся в объекте контейнер:
for (var i:int=0; i < контейнер.numchildren; i++) { trace(kowre/fwep.getchildat(i).tostring( ));
}
В листинге 20.3 приведено более конкретное и слегка причудливое приложение для обхода отображаемых дочерних объектов. Оно создает 20 экземпляров класса
Shape, содержащих прямоугольники, и затем использует описанный подход для обхода объектов, чтобы выполнять вращение этих экземпляров, когда на них щелкают кнопкой мыши. Код, осуществляющий обход, выделен полужирным шрифтом. В следующих разделах мы рассмотрим приемы векторного рисования и обработки событий мыши, применяемые в этом примере.
Листинг 20.3. Вращение прямоугольников
package { import flash. display.*; import flash. events.*;
public class RotatingRectangles extends Sprite { public function RotatingRectangles ( ) { // Создаем 20 прямоугольников var rects;Array = new Array( ); for (var i:int = 0; i < 20; i++) { rects[i] = new shape( ); rects[i].graphi cs.1i nesty1e(1);
rects[i].graphi cs. begi nFi11(Math. f1oor(Math. random( )*0xFFFFFF), 1) ;
rects[i]. graphi cs. drawRecUO. 0, 100, 50);
rects[i].x = Math. f1oor(Math. random( )*500);
rects[i].y = Math. floor(Math. random( )*400);
addChild(rects[i]);
}
// Регистрируем приемник для щелчков кнопкой мыши
stage. addEventListener(MouseEvent. M0USE_D0WN, mouseDownListener);
}
// Вращает прямоугольники, когда пользователь щелкает кнопкой мыши private function mouseDownListener (e;Event);void {
// Случайным образом вращает каждого отображаемого ребенка
// данного объекта.