![]() |
перебрать вложенные объекты movieClip
Здравствуйте, хочу написать обертку к starling которая будет конвертировать movieClip созданные в flashIde в sprite starling с сохранением иерархии объектов. Но сразу возникла проблема что не получается перебрать циклом вложенные в MC объекты
Код AS3:
|
А почему перебор таким образом осуществляется? Это же не массив.
Нужно использовать getChildAt в цикле |
Действительно, не подумал, спасибо)
Еще не большой вопрос, можно ли как то расширить starling.sprite?если создать public var o:Object={}; и обращаться ко всем вложенным объектам через него. Но хотелось бы обращаться напрямую и заносить объекты как this[name]=value; Возможно ли это? |
В чем проблема-то? Старлинг работает по общему принципу ООП. Если класс не final (а starling.display.Sprite не final), то его можно расширить.
п.с. public var o:Object={}; противоречит принципу инкапсуляции. Надо делать через геттеры и сеттеры. Не должны внешние объекты напрямую обращаться к свойствам другого объекта |
Цитата:
|
Цитата:
|
Цитата:
Я признаю public var только в тех случаях, когда какой-то класс используется исключительно для создания объектов "хранилищ", то есть использование динамиков типа Object не подходит из-за необходимости четкой типизации передаваемых данных. Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
В анимации у TweenMax класс PropTween и чтобы не перечислять можно просто сказать, что напрямую к свойствам обращаются везде, где используется паттерн wrapper. А его почти всегда используют там, где нужна скорость. И не факт, что классы делают приватными.
|
Цитата:
Цитата:
Цитата:
|
Да большинство тут будут согласны с caseyryan - о чем речь то вести. Я вообще не помню , когда посл раз использовал public var , наверное только когда о ней узнал )))) По сабжу даже хранилище данных не всегда ( в размере будущей расширяемости ) стоит набивать пабликами, а вдруг в будушем придется оформить алгоритм для ведения переменной? А сделать гет-сет только для одной остаиви везде паблик - моветон, шлюха тон, я бы даже сказал.
В конфиге еще можно Код AS3:
|
Цитата:
|
Цитата:
но никогда не понимал оборачивание свойств в get\set ради какого-то абстрактного 'правильного подхода' read\write only, отследить, проверить, загнать в интерфейс - это мне понятно, а в чем смысл голой оберки как-то не очень: геттер-сеттер предоставляет такой же доступ к данным, правда 'слегка' (где-то на порядок) замедляя его, ну и в чем смысл этого, особенно во флеше, где производительность завсегда была больным местом.. к слову, мне кажется, что инкапсуляция в широком смысле это не сокрытие\защита данных как самоцель, а реализация функционала объектов, не зависящего от внешних факторов/условий, не ? реализуется это приватными данными\методами, какое отношение голая обертка гет-сет имеет к инкапсуляции ? >>а вдруг в будушем придется оформить алгоритм для ведения переменной? что-то помешает заменить прямой доступ на аксессор в будущем,ну в смысле когда/если это понадобится ? |
Странный подход, хотя может мы друг друга не правильно поняли.
Допустим у нас есть такой сеттер и геттер: Код AS3:
Код AS3:
|
Я вообще не понимаю, зачем нужен public var. За несколько тысяч написанных мною строк кода ни разу не понадобилось использовать public var.
Например, был класс, общавшийся с сервером. Он загружал данные с него, записывал в приватную переменную _data, и посылал событие окончания загрузки. Я решил, что снаружи устанавливать значение _data ну вообще никуда не пригодится, и сделал get-метод для получения данных после загрузки. Более того, в нём я проверил, есть ли что в переменной и добавил дополнительные действия. Приведите же хоть один пример, когда открытые переменные ну уж очень необходимы. |
Цитата:
Но на счет голых геттеров сеттеров, спорить бессмысленно. Потому что аргументов в их защиту просто не найти (кроме банального преследования "правильности" подхода) Цитата:
|
Цитата:
|
Хочешь более реальный пример: приходит с сервера сообщение через сокет. И происходит это с десяток-другой раз в секунду. Надо эти данные записать в переменные и передать куда-то дальше. Вот тут как раз идеальный вариант писать в паблик вар. Это будет гораздо быстрее. ГОРАЗДО! Вот в этом случае как раз производительность имеет заначение. Плюс, имея там типизированные переменные, не тратится время на дополнительное пиведение типов
|
caseyryan гораздо быстрее по сравннию с чем? С целероном 88 годов ? Пример то понятен - но в скорости тут выигрыша никакого нет, по крайней мере визуального - а оно нам главное во флеше. Разговор о скорости начинает идти, когда задержка на выполнение скрипта становится хотя бы 0.05 - в других случаях о какой скорости идет речь... скорости ума если тока.
|
Посли таких слов вспоминается Ваша тема про "всё-всё лагает":)
|
Цитата:
|
| Часовой пояс GMT +4, время: 01:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.