Книга: Справочник по Flash
for...in - Цикл, используемый для перечисления свойств объекта
for...in - Цикл, используемый для перечисления свойств объекта
for...in
Цикл, используемый для перечисления свойств объекта.
Синтаксис:
for (var thisProp in object) { statements // Предложения обычно используют thisProp}
Вместо повторения серии предложений, пока заданное проверочное выражение не даст значения false, цикл for-in осуществляется по одной итерации для каждого свойства для заданного объекта.
Предложения for-in не требуют явного обновляющего предложения, поскольку число итераций цикла определяется числом свойств рассматриваемого объекта.
Предложения statements выполняются по одному разу для каждого свойства object;
На каждой итерации цикла переменная thisProp временно хранит строку, которая содержит имя свойства объекта, перечисляемого в данный момент. Это значение строки можно использовать во время каждой итерации, чтобы получить доступ к каждому свойству и обработать его.
Простейшим примером цикла for-in является сценарий, который перечисляет свойства объекта.
Примеры:
Создание объекта, а затем перечисление по пунктам его свойств с помощью цикла for-in
var ball = new Object();ball.radius = 12;ball.color = "red";ball.style = "beach";for (var prop in ball) { trace("balls has the property " + prop);}
Пример выведет следующее
balls has the property style balls has the property color balls has the property radius
Т.к. prop хранит имена свойств ball как строки, для извлечения значений этих свойств можно использовать prop с оператором []:
for (var prop in ball) { trace("balls." + prop + " is " + ball[prop]);}
Пример выведет:
ball.style is beach ball.color is red ball.radius is 12
Стоит обратить внимание, что свойства объекта, просматриваемые в цикле for-in, нумеруются в непредсказуемом порядке. Кроме того, предложения for-in не всегда перечисляют все свойства объекта. Если объект определен пользователем, перечисляются все свойства, включая унаследованные.
Но некоторые свойства встроенных объектов предложением for-in пропускаются. Например, этим циклом не перечисляются методы встроенных объектов. Если вы хотите использовать предложение for-in для работы со свойствами встроенного объекта, сначала создайте проверочный цикл для определения доступных свойств объекта.
Извлечение значений свойств с помощью цикла for-in предоставляет также отличную возможность обнаружения клипов, присутствующих на временной диаграмме.
Пример: Заполнение массива динамически идентифицируемыми клипами
var childClip = new Array();var childClipCount = 0;for(i in _root) { thisItem = _root[i]; if(typeof thisItem == "movieclip") { // Обратите внимание на постфиксный оператор инкрементирования childClip[childClipCount++] = thisItem; }}// После заполнения массива можно использовать его// для обработки клипов, которые в нем находятся// Поместить первый клип у левого края рабочего столаchildClip[0]._x = 0// Поместить второй клип у верхнего края рабочего столаchildClip[1]._y = 0
В приведенном примере при использовании в предложении for-in функция typeof дает удобный способ нахождения всех экземпляров клипа на временной диаграмме.
Когда клипы определены, их можно присвоить массиву для проведения программной обработки.
Цикл for-in также можно использовать для извлечения элементов массива. В этом случае цикл примет вид:
for (var thisElement in array) { statements;}
Пример: Перечисление элементов массива
var myArr = [123, 234, 345, 456];for( var elem in myArr) { trace(myArr[elem]);}
Совместимость:
Используется с 5-ой версии Flash
- break - Прекращает выполнение цикла
- call - Выполнить сценарий удаленного клипа
- comment - Вставить комментарии
- continue - Заново начинает текущий цикл
- delete - Удаление объекта, элемента массива или переменной
- duplicateMovieClip - Создать копию клипа
- evaluate - Создает новую пустую строку, и вставляет ;
- for - Многократно выполняет некоторый код
- for...in - Цикл, используемый для перечисления свойств объекта
- fscommand - Передача данных браузеру
- function - Создает новую функцию
- getURL - Переход на веб-страницу
- if - Выполнение или не выполнение предложений в зависимости от условий
- ifFrameLoaded - Выполняет код если загруженн определенный кадр
- include - Импорт текста из внешнего файла ActionScript
- loadMovie - Загрузить файл .swf
- loadMovieNum - Загрузить файл .swf
- loadVariables - Загружает в клип или фильм внешние переменные
- loadVariablesNum - Прикрепляет группу внешних переменных к уровню документа
- print - Вывод на печать кадров фильма или клипа с использованием векторной графики
- printNum - Печать кадров уровня документа как векторных изображений
- printAsBitmap - Вывод на печать кадров фильма или клипа с использованием растровой графики
- printAsBitmapNum - Печать кадров уровня документа как растровых изображений
- removeMovieClip - Удалить клип фильма из Flash Player
- return - Выходит из функции или возвращает ее значение
- setProperty - Присвоить значение свойству клипа фильма
- startDrag - Заставляет фильм или клип следовать за курсором мыши
- Stop - Остановить воспроизведение фильма на текущем кадре
- stopAllSounds - Выключить все звуки
- stopDrag - Останавливает текущую операцию перетаскивания
- tellTarget - Обратиться к удаленному клипу
- toggleHighQuality - Изменение качества
- unloadMovie - Удалить фильм или клип из проигрывателя
- unloadMovieNum - Удалить фильм из проигрывателя
- var - Объявление локальной переменной
- while - Многократно выполняет некоторый код
- with - Выполняет некоторый код в конце указанного объекта
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- Forced writes - палка о двух концах
- Ответный файл, используемый по умолчанию (csc.rsp)
- Forced Writes
- Жизненные циклы продуктов
- 7 Система Цикл: долгосрочные цели
- 1.2.6. Циклы и ветвление
- Chapter 15. Graphical User Interfaces for Iptables
- What NAT is used for and basic terms and expressions
- Information request
- SCTP Generic header format