Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.04.2014, 11:43
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 1  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
По умолчанию перебрать вложенные объекты movieClip

Здравствуйте, хочу написать обертку к starling которая будет конвертировать movieClip созданные в flashIde в sprite starling с сохранением иерархии объектов. Но сразу возникла проблема что не получается перебрать циклом вложенные в MC объекты
Код AS3:
			var t2:testSprite = new testSprite();
			for (var i in t2)
			trace(i);
Это как нибудь можно обойти. или идея обречена на провал?

Старый 19.04.2014, 12:02
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А почему перебор таким образом осуществляется? Это же не массив.
Нужно использовать getChildAt в цикле

Старый 19.04.2014, 13:11
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 3  
Ответить с цитированием
faraday
 
Аватар для faraday

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

Старый 19.04.2014, 17:33
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

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

Старый 22.04.2014, 13:06
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 5  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

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

Старый 22.04.2014, 13:19
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 6  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Сообщение от PainKiller Посмотреть сообщение
это просто нездоровый фанатизм инкапсуляции, я думаю все таки большинство программистов используют public var, а геттеры и сеттеры ставят только когда надо защитить/проверить/сделать дополнительное действие при присвоении и тому подобных случаях.
Это "большинство" наверняка ничего нормального не напишет)
__________________
There is no thing in this world that is not simple.

Старый 22.04.2014, 14:31
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

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

Старый 22.04.2014, 14:34
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 8  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

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

Старый 22.04.2014, 15:05
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
А если нужна скорость?
Тогда использовать C++, а не as3.

Старый 22.04.2014, 15:10
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 10  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Тогда использовать C++, а не as3.
Тогда откажитесь от анимации и ещё половины фраймворков, так-как там не используют геттеры-сеттеры.

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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