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

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

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
По умолчанию Вектор с классом, созданным в рантайме. Можно ли?

Привет. Озадачился такой проблемкой. Пытаюсь сделать что-то типа сериализатора/десиарелизатора и хочу чтобы вектора правильно считывались. Не могу придумать как. Со встроенными типами все легко и понятно, однако с моими - не все гладко. Например, имею класс T. В рантайме получаю его, например, так:
Код AS3:
var t:Class = T;
Теперь пытаюсь создать вектор:
Код AS3:
var v:Vector.<t> = new Vector.<t>();//не прокатывает
Однако, если t будет задан как Vector.<T>, то
Код AS3:
var v:t = new t();//работает, но не то, что нужно
Могу ли я теперь получить класс, который содержится в созданном векторе?
Если что-то непонятно, не стесняйтесь, спрашивайте ).

Upd.: нашел, что искал (стаковерфлоу кстати классный форум). Если кто-то заинтересовался в той бредятине что я написал, то вот этот хак:
Код AS3:
var t:Class = T;
var className:String = getQualifiedClassName(t);
var vectorClass:Class  = Class(getDefinitionByName('Vector.<' + className + '>'));
var v:* = new vectorClass();
v.push(new T());//все отлично


Последний раз редактировалось Волгоградец; 19.12.2011 в 14:43.
Старый 19.12.2011, 14:41
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 2  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Можно юзать хак с getDefinitionByName
Например вот: http://actualwave.com/blog/?p=259 (что под рукугугл попалось).

Код AS3:
static public const VECTOR_CLASS_NAME:String = getQualifiedClassName(Vector);
static public function getVectorDefinition(itemDefinition:Class, applicationDomain:ApplicationDomain=null):Class{
	if(!applicationDomain) applicationDomain = ApplicationDomain.currentDomain;
	return applicationDomain.getDefinition(VECTOR_CLASS_NAME+'.<'+getQualifiedClassName(itemDefinition)+'>') as Class;
}
static public function createCustomVector(itemDefinition:Class, length:uint=0, fixed:Boolean=false, applicationDomain:ApplicationDomain=null):Vector.<*>{
	var definition:Class = getVectorDefinition(itemDefinition, applicationDomain);
	return new definition(length, fixed);
}

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

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

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


 


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


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