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

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

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

Регистрация: Apr 2015
Сообщений: 2
По умолчанию Можно ли добавить объект на сцену, получив название его класса в xml

Можно ли как то добавить объект на сцену, имея название его класса, переданное через xml? Т.е. получил список объектов, которые нужно добавить на сцену:
Код:
<name>Name1</name>
<name>Name2</name>
<name>Name3</name>
и так же в библиотеке есть изображения с классами Name1, Name2, Name3.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
getDefinitionByName()
__________________
Reality.getBounds(this);

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Тут еще необходимо уточнить, что этот класс должен быть явно упомянут где-то в проекте, чтобы он вкомпилировался (в официальной справке плохой пример, лучше бы сделали не со встроенным классом). Иначе ничего не получится. И имя класса должно содержать полный пакет. То есть, к примеру, не Sprite, а flash.display.Sprite

Старый 26.04.2015, 21:28
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 4  
Ответить с цитированием
OlmerDale
[+1 09.05.15]

Регистрация: Jan 2015
Сообщений: 113
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.utils.getDefinitionByName;
 
	import ILoadeClassMarker
 
	public class Main extends Sprite
	{
 
		public function Main() 
		{
			var iLoadedAssetMarker:ILoadeClassMarker;
 
			var className:String = 'CustomClass';
			var ConcreteClass:Class = getDefinitionByName(className) as Class;
			var instence:Object = new ConcreteClass();
 
			trace(ConcreteClass, instence);
		}
 
	}
 
}
Код AS3:
package 
{
	public interface ILoadeClassMarker 
	{
		function customClass():CustomClass
	}
 
}

Старый 26.04.2015, 21:42
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Вам же уже сказали, что класс физически должен быть вкомпилен во флешку.

Код AS3:
import ILoadeClassMarker
import не даст эффекта.

эффект даст строка

Код AS1/AS2:
ILoadeClassMarker;
Но, если это интерфейс, то вкомпилится только он. Класс "CustomClass" по-прежнему будет отсутствовать (не вкомпилится).
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

Старый 26.04.2015, 21:51
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 7  
Ответить с цитированием
OlmerDale
[+1 09.05.15]

Регистрация: Jan 2015
Сообщений: 113
Цитата:
Класс "CustomClass" по-прежнему будет отсутствовать (не вкомпилится).
Почему не вкомпилится, когда в интерфейсе он упомянут? И мои слова подтверждаются выполнением кода без ошибок.

Добавлено через 1 минуту
caseyryan, мне почему-то так больше нравится.

Старый 26.04.2015, 21:53
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Воспользуйтесь декомпилятором и проверьте. И если "CustomClass" вы явно нигде не упоминали, то его не должно быть в вашем приложении.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 26.04.2015, 22:10
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 9  
Ответить с цитированием
OlmerDale
[+1 09.05.15]

Регистрация: Jan 2015
Сообщений: 113
Я после создания инстенса вызываю метод и вижу вывод сообщение. Это же означает что класс вкомпилировался?
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.utils.describeType;
	import flash.utils.getDefinitionByName;
 
 
	public class Main extends Sprite
	{
 
		public function Main() 
		{
			var iLoadedAssetMarker:ILoadeClassMarker;
 
			var className:String = 'CustomClass';
			var ConcreteClass:Class = getDefinitionByName(className) as Class;
			var instence:Object = new ConcreteClass();
 
			instence.say(); //  и где-то в output - hello
		}
 
	}
 
}
Код AS3:
package 
{
	public class CustomClass 
	{
 
		public function CustomClass() 
		{
 
		}
 
		public function say():void
		{
			trace('hello');
		}
	}
 
}
caseyryan, и я немного неправду сказал. Я так впервые сделал, почему-то так просто захотелось.

Старый 26.04.2015, 22:16
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 10  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от OlmerDale Посмотреть сообщение
Я после создания инстенса вызываю метод и вижу вывод сообщение. Это же означает что класс вкомпилировался?
Ну, получается, что так. Иначе вы получите RTE.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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