Руководство по actionscript. часть 3, стр. 135

For (var i:int=0; i < numchildren; i++) { getchildat(i).rotation = math.floor(math.random( )*360);

}

}

}

}

Чтобы обращаться не только к непосредственным детям контейнера, но и ко всем его потомкам, мы интегрируем предыдущий цикл for в рекурсивную функцию. В листинге 20.4 представлен общий подход.

Листинг 20.4. Рекурсивный обход дерева списка отображения

public function processChildren (container:DisplayObjectContainer):void { for (var i;int = 0; i < container.numchildren; i++) { // обрабатываем ребенка здесь. например, следующая строка выводит // строковое значение данного ребенка на консоль, var thischiid:displayobject = container.getchildat(i); trace(thischild.tostring( ));

// Если этот ребенок сам по себе является контейнером, приступаем // к обработке его детей, if (thisChild is DisplayObjectContainer) { processChi1dren(DisplayObjectContaiпег(thisChi1d));

}

}

}

Следующая функция rotateChildren ( ) использует обобщенный код из листинга 20.4. Она случайным образом поворачивает всех потомков указанного контейнера (а не только детей). Однако обратите внимание на небольшое изменение в подходе, представленном в листинге 20.4: функция rotateChildren ( ) вращает только тех детей, которые не являются контейнерами.

public function rotateChildren (contaiпег[DisplayObjectContainer):void { for (var i:int = 0; i < container.numchildren; i++) { var thi schi1d:di splayobject = container.getchi1dat(i); if (thischild is displayobjectcontainer) {

rotateChi1dren(Di splayObjectContai ner(thi sChiId)); } else {

thisChild. rotation = Math. f1oor(Math. random( )*360);

}

}

}

Управление одновременно несколькими объектами в контейнерах

Ранее в разд. «Обзор API отображения» было сказано, что дочерние объекты автоматически перемещаются, вращаются и трансформируются при перемещении, вращении и трансформировании их предков. Мы можем использовать эту возможность для выполнения коллективных визуальных модификаций над группами объектов. Чтобы познакомиться с этой методикой, создадим два экземпляра класса Shape, представляющих прямоугольники, в экземпляре класса Sprite:

// Создаем два прямоугольника

var recti:Shape = new Shape( ):

recti. graphi cs.1i neSty1e(1):

recti. graphics. beginFill(OxOOOOFF, 1);

recti. graphics. drawRect(0, 0, 75, 50);

var rect2:Shape = new Shape( ):

rect2.graphi cs.1i neSty1e(1);

rect2.graphics. beginFill(OxFFOOOO, 1):

rect2.graphics. drawRect(0, 0, 75, 50);

rect2.x = 50;

rect2.y = 75;

// Создаем контейнер

var group:Sprite = new Sprite( );

// Добавляем прямоугольники в контейнер group. addChiId(recti); group. addChiId(rect2);

// Добавляем контейнер в основное приложение некоеОсновноеПриложение. addChi1d(group);

На рис. 20.13 показан результат выполнения предыдущего кода.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.162
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 043
  • 19.03.2011">Руководство по actionscript. часть 2, стр. 083
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.124
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.65
  • 17.03.2011">Руководство по actionscript. часть 3, стр. 001
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.13
  • 19.08.2013">Android с новыми возможностями на Chuwi V88
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.109
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 079
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 034
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.12
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 141
  • 06.09.2011">Фотография жива и будет жить
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 124
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...