Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   перебрать вложенные объекты movieClip (http://www.flasher.ru/forum/showthread.php?t=207487)

faraday 19.04.2014 11:43

перебрать вложенные объекты movieClip
 
Здравствуйте, хочу написать обертку к starling которая будет конвертировать movieClip созданные в flashIde в sprite starling с сохранением иерархии объектов. Но сразу возникла проблема что не получается перебрать циклом вложенные в MC объекты
Код AS3:

                        var t2:testSprite = new testSprite();
                        for (var i in t2)
                        trace(i);

Это как нибудь можно обойти. или идея обречена на провал?

caseyryan 19.04.2014 12:02

А почему перебор таким образом осуществляется? Это же не массив.
Нужно использовать getChildAt в цикле

faraday 19.04.2014 13:11

Действительно, не подумал, спасибо)
Еще не большой вопрос, можно ли как то расширить starling.sprite?если создать public var o:Object={};
и обращаться ко всем вложенным объектам через него. Но хотелось бы обращаться напрямую и заносить объекты как this[name]=value; Возможно ли это?

caseyryan 19.04.2014 17:33

В чем проблема-то? Старлинг работает по общему принципу ООП. Если класс не final (а starling.display.Sprite не final), то его можно расширить.
п.с. public var o:Object={}; противоречит принципу инкапсуляции. Надо делать через геттеры и сеттеры. Не должны внешние объекты напрямую обращаться к свойствам другого объекта

PainKiller 22.04.2014 13:06

Цитата:

п.с. public var o:Object={}; противоречит принципу инкапсуляции. Надо делать через геттеры и сеттеры. Не должны внешние объекты напрямую обращаться к свойствам другого объекта
это просто нездоровый фанатизм инкапсуляции, я думаю все таки большинство программистов используют public var, а геттеры и сеттеры ставят только когда надо защитить/проверить/сделать дополнительное действие при присвоении и тому подобных случаях.

ZackMercury 22.04.2014 13:19

Цитата:

Сообщение от PainKiller (Сообщение 1164213)
это просто нездоровый фанатизм инкапсуляции, я думаю все таки большинство программистов используют public var, а геттеры и сеттеры ставят только когда надо защитить/проверить/сделать дополнительное действие при присвоении и тому подобных случаях.

Это "большинство" наверняка ничего нормального не напишет)

caseyryan 22.04.2014 14:31

Цитата:

только когда надо защитить/проверить/сделать дополнительное действие при присвоении и тому подобных случаях.
Каковых как раз большинство. Инкапсуляция - это хорошо. Никакого фанатизма в этом нет. Это просто правильный подход.
Я признаю public var только в тех случаях, когда какой-то класс используется исключительно для создания объектов "хранилищ", то есть использование динамиков типа Object не подходит из-за необходимости четкой типизации передаваемых данных.
Цитата:

я думаю все таки большинство программистов используют public var
Очень сомневаюсь

Akopalipsis 22.04.2014 14:34

Цитата:

public var только в тех случаях, когда какой-то класс используется исключительно для создания объектов "хранилищ"
А если нужна скорость? Мне лично безразлично ОПП, когда нужна скорость.

caseyryan 22.04.2014 15:05

Цитата:

А если нужна скорость?
Тогда использовать C++, а не as3.

Akopalipsis 22.04.2014 15:10

Цитата:

Тогда использовать C++, а не as3.
Тогда откажитесь от анимации и ещё половины фраймворков, так-как там не используют геттеры-сеттеры.


Часовой пояс GMT +4, время: 23:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.