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

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

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

Регистрация: Jul 2009
Сообщений: 149
По умолчанию Создание произвольного количества экземпляров класса

Добрый день!
Допустим у меня есть класс MyClass и класс MnogoKlassov. Как мне в классе myClass создать произвольное количество экземпляров класса MnogoKlassov. Количество классов и их имена буду подгружать через php из базы данных, каждый раз количество и имена могут меняться.

Допустим, я загрузил ответ от php, получил массив с именами классов, пусть будет namesArray.
Пишу:

Код AS3:
package имяПакета{
 
           import flash.display.MovieClip;
 
 
public class MyClass extends MovieClip{
 
 
 function MyClass()
	   {
for(var i:int=0;i<namesArray.length;i++)
		       {
this[namesArray[i]]=new MnogoKlassov();
 
}//for
 
}
 
 
}
}
Но, как и следовало ожидать возникает ошибка "Не удается создать свойство имяКласса в имяПакета.MyClass." т.к. в описании класса MyClass отсутствуют определения этих классов.
Подскажите, пожалуйста, как решить данную проблему.


P.S. Прошу прощения за может быть где-то не правильную терминологию, начал переходить на AS3 три недели назад.

Старый 02.06.2011, 15:45
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 2  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
Вы путаете "имя класса" и "имя переменной". Если вы хотите динамически создавать переменные с указанными именами, то ИМХО у вас не правильно организована структура приложения.
А вообще почитайте про динамические (dynamic) классы.

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
dynamic

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

Регистрация: Jul 2009
Сообщений: 149
Большое спасибо за быстрые ответ. Заработало. Догадывался что нужно делать класс динамическим, но,
скажу вам по секрету, пусть это и смешно, я писал "dinamic" вместо "dynamic" и не понимал почему не подсвечивается средой разработки))
Мне просто надо было внимательнее читать книгу Мука.

Старый 02.06.2011, 16:26
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 5  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
не используйте dynamic, это очень плохо с точки зрения ООП и последующей поддержки. Объявите массив и сожите объекты туда. А на себя сделайте addchild. Лежать(грфически) они будут на вашем объекте а ссылки на них будуте хранить в массиве и управлять ими оттуда.

Старый 02.06.2011, 16:29
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 6  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Цитата:
Сообщение от Aquahawk Посмотреть сообщение
не используйте dynamic, это очень плохо с точки зрения ООП и последующей поддержки
Чем же?
__________________
Кодинг, багинг, алгоритминг. me @

Старый 02.06.2011, 16:38
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 7  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Тем же, чем и нетипизированные переменные (по сути они и создаются). Ну и на ровном месте +размер и, возможно, тормоза у класса.
Тут возможно поможет ассоциативный массив (ака Object для AS3). Или даже просто массива хватит.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 02.06.2011, 16:38
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 8  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Тем что код не является самодокументированным и множество проверок типов которые можно делать при компиляции уходят в рантайм. Это катастрофически медленно в исполнении, и очень тяжело дебажить.

Добавлено через 5 минут
я пишу очень большие и сложные проекты на AS3 и ещё ни в одном у меня не было даже мысли сделать dynamic или объявить нетипизированный object или *. Это наследие ECMAscript и я его не люблю. Я люблю строгую типизацию. Может потому что первым языком на котором я начал писать что-то существенное был C++

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

Регистрация: Jul 2009
Сообщений: 149
Aquahawk, вот так? Я вас правильно понял?

Код AS3:
package имяПакета{
 
           import flash.display.MovieClip;
 
 
public class MyClass extends MovieClip{
 
 var classNames_ar:Array;
 
 
 function MyClass()
	   {
for(var i:int=0;i<namesArray.length;i++)
 {
classNames_ar[i]=new MnogoKlassov();
 
addChild(classNames_ar[i]);
 
}//for
 
}
 
 
}
}
Если не трудно, объясните чем плохо использование dynamic с точки зрения ООП.

Старый 02.06.2011, 16:55
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 10  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
да именно так

Добавлено через 1 минуту
используйте форматирование, пожалуйста.

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

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

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


 


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


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