PDA

Просмотр полной версии : for each внутри контейнера


Godwarlock
26.06.2018, 03:22
Подскажите пожалуйста, почему не работает такой способ получения чилда через for each?

var container:Sprite = new Sprite();
addChild(container);
var test_sprite:MyClassSprite = new MyClassSprite();
container.addChild(test_sprite);

for each(var myClass:MyClassSprite in container)
{
trace(myClass);
}

alexandrratush
26.06.2018, 10:17
Потому что этот тип цикла перечисляет все свойства объекта container (numChildren, alpha, visible...) Используйте for.

RedHead90
26.06.2018, 13:56
Потому что этот тип цикла перечисляет все свойства объекта container (numChildren, alpha, visible...) Используйте for.

Из документации (https://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/statements.html#for_each..in): Инструкция цикла for each..in выполняет итерацию только через динамические, а не фиксированные, свойства объекта.

Godwarlock
26.06.2018, 14:21
RedHead90 объявил класс dynamic. Результата нет.
alexandrratush Да походу так и придется

RedHead90
26.06.2018, 14:42
Godwarlock, а какого результата ты ждал? Моё сообщение о том, что цикл for each..in не перечисляет такие поля, как numChildren, alpha, visible, как пишет alexandrratush.

alexandrratush
26.06.2018, 15:31
Да, RedHead90 правду говорит. Ошибся я. :(
Используйте цикл for в связке с numChildren и getChildAt(). Так можно перебрать все объекты в контейнере.