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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.01.2008, 14:11
  № 1  
Ответить с цитированием
amf
Guest

Сообщений: n/a
По умолчанию Создать экземпляр класса не зная заранее его имя

Здравсвтвуйте Вам =)
Можно ли реализовать создание экземпляра класса в функции, если на момент компиляции имя создаваемого класса еще не известна, но класс есть.
что-то типа этого:
Код:
public function createMyClip ( mcName:String )  {
    var mc:this[mcName] = new this[mcName];
    this.addChild(mc);
}
смысл в том, что мы получаем имя следующего MC от сервера.

Старый 17.01.2008, 14:21
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 2  
Ответить с цитированием
Mr. Fixit
Banned

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
изврат.
а ты не пробовал?

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

Регистрация: Feb 2006
Адрес: Рига
Сообщений: 42
Код:
import flash.utils.getDefinitionByName;
Код:
public function createMyClip(mcName:String):void
{
	// имя должно содержать путь до класса, например: "flash.display::Sprite"
	try
	{
		var cls:Class = getDefinitionByName(mcName) as Class;
	}
	catch(e:Error)
	{
		trace("Нет такого класса");
		return;
	}
			
	this.addChild(new cls);
}
вродь так

Старый 27.01.2008, 21:34
f3ath вне форума Посмотреть профиль Отправить личное сообщение для f3ath Найти все сообщения от f3ath
  № 4  
Ответить с цитированием
f3ath

Регистрация: Dec 2007
Сообщений: 8
Аналогичная проблема. Реализую паттерн Фабрика на AS3. Нужно инстанцировать класс, имея в строковой переменной его имя. В AS2 решалось просто:

Код:
className:String = 'myClass';
myObj = new [className];
Как то же самое сделать в AS3?

Старый 27.01.2008, 21:39
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 5  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Цитата:
Сообщение от f3ath
Аналогичная проблема. Реализую паттерн Фабрика на AS3. Нужно инстанцировать класс, имея в строковой переменной его имя. В AS2 решалось просто:

Код:
className:String = 'myClass';
myObj = new [className];
Как то же самое сделать в AS3?
у меня в АС2 такой код не работал
а вообще getDefinitionByName

Старый 27.01.2008, 21:40
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
f3ath, прежде чем постить свой вопрос, можно было прочитать последний пост темы (#3)?

Старый 27.01.2008, 22:07
f3ath вне форума Посмотреть профиль Отправить личное сообщение для f3ath Найти все сообщения от f3ath
  № 7  
Ответить с цитированием
f3ath

Регистрация: Dec 2007
Сообщений: 8
Да, я поспешил. Но есть смежный вопрос. Для того, чтобы воспользоваться предложенным способом, нужно, чтобы где-либо в коде класс, который нам нужен, был уже инстанцирован напрямую, то есть его имя фигурировало в коде. А если я не могу перечислить все возможные классы из какого-либо package?

Вот, скажем, у меня есть package myPack1 и myPack2, в которых содержится 1000 разных классов причем имена у классов могут совпадать. Я пишу
Код:
import myPack.*;
import myPack2.*;
а затем, мне нужно получить экземпляр класса, полное имя которого, лежит в переменной, скажем
Код:
var cName:String = "myPack2.myMegaCoolClass";
Как сделать такое?

Старый 27.01.2008, 22:19
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Никак. Можно с помощью компилятора Flex SDK скомпилировать swf-ку со всеми нужными классами, даже если они не используются.

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

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

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


 


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


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