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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.08.2007, 21:01
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 1  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
По умолчанию Добавление экземпляра класса, название которого получаем динамически.

Если название топика непонятно, попробую объяснить еще раз: в Library есть n мувиков, связанных с .as файлами: C1, C2, C3, ..Cn.

В процессе выполнения скрипта, мы получаем(напр от php, xml или рандомно) название класса, экземпляр которого необходимо создать.

Код:
var s:String="C2";
var d=new s;
само-собой не срабатывает.
Как решить данную проблему?

Старый 17.08.2007, 21:57
lowka вне форума Посмотреть профиль Отправить личное сообщение для lowka Найти все сообщения от lowka
  № 2  
Ответить с цитированием
lowka

Регистрация: Sep 2006
Сообщений: 256
flash.utils.getDefinitionByName()

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

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Я делаю так.
Код:
import flash.utils.*;
import flash.display.*;

var c:Class=getDefinitionByName('C2') as Class;
var bd:BitmapData=new c(0,0); //as BitmapData; не обязательно, хотя кто-то и будет готов поспорить (да и я могу ошибаться)

var b:Bitmap=new Bitmap(bd);

addChild(b);


Последний раз редактировалось Dima_DPE; 18.08.2007 в 16:04.
Старый 18.08.2007, 15:25
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 4  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Спасибо.

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

Регистрация: Sep 2002
Сообщений: 30,787
Dima_DPE, отредактируйте свой пост и оформите код тегами [code][/code].

Старый 19.08.2007, 01:50
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 6  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Увязывая ролик с XML-ом, напоролся на непонятную ошибку.
При запуске ролика, должны появляться экземпляры указанных в XML классов с заданными в XML параметрами. Однако, после того как появляется 1й экземпляр, Flash почему-то выпадает в ошибку
TypeError: Error #1009: Cannot access a property or method of a null object reference.
Проблеммную строчку я закомментировал и выделил белым. Подскажите пжл причину ошибки.

XML:
Код:
<page>
	<classobj classname="D" params="firstparams" />
	<classobj classname="E" params="secondparams" />
</page>
AS3
Код:
package {
import flash.events.Event
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.xml.XMLNode;
import flash.utils.getDefinitionByName;
	public class C extends Sprite {
		public function C(){
			loadXML();
		}
		
		private function loadXML(){
			var loader:URLLoader;
			loader = new URLLoader();
			loader.addEventListener(Event.COMPLETE, xmlLoaded);
			var request:URLRequest = new URLRequest("test.xml");
			loader.load(request);
			
			function xmlLoaded(event:Event):void {
			    var myXML:XML = new XML(loader.data);
				runxml(myXML);
			}

			function runxml(xml:XML) {  
				var n:uint;
				var instances:Array;
				var ClassReference:Class;
				for each(item in xml.children()) {
					n++;
					ClassReference = getDefinitionByName(item.@classname) as Class;
					trace(n+": "+item.@classname);
					//instances[n] = new ClassReference();	 	
				}
			}
		}
	}
}
AS3-D
Код:
package {
import flash.display.Sprite;
	public class D extends Sprite {
		public function D(){
			trace("D class Loaded");
		}
	}
}
AS3-E
Код:
package {
import flash.display.Sprite;
	public class E extends Sprite {
		public function E(){
			trace("E class Loaded");
		}
	}
}


Последний раз редактировалось Torero; 19.08.2007 в 02:04.
Старый 19.08.2007, 10:35
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 7  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Дам-с. Массив материализовать требуется
Код:
var instances:Array=[];
или
Код:
var instances:Array=new Array();
Привыкай! Я как посмотрел еще и про uint подумал, но вспомнил что им сразу нуль присваевается. Удачи!

PS Да еще, item.@classname является экземпляром класса XMLList, но он легко приводится к строке и даже не ругается при компиляции и выполнение (а я бы ругался =) ). Это как раз тот случай, о котором писал Рост на flash-ripper.com.


Последний раз редактировалось Dima_DPE; 19.08.2007 в 10:41.
Старый 19.08.2007, 15:12
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 8  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
м-да.. перетрудился я видимо... спасибо..

2 Dima_DPE:
вопросик: а какие мысли/чувства во мне твой "PS" должен был пробудить и на какие выводы натолкнуть?
__________________
А я Томат.

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

Регистрация: Sep 2002
Сообщений: 30,787
Torero, мысль о том, что надо к строке приводить.

Старый 19.08.2007, 20:11
Torero вне форума Посмотреть профиль Отправить личное сообщение для Torero Найти все сообщения от Torero
  № 10  
Ответить с цитированием
Torero
[+1.4 18.06.07]
 
Аватар для Torero

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Буду краток: прочитал, оценил, спасибо.
__________________
А я Томат.

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

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

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


 


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


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