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

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

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

Регистрация: Jan 2008
Сообщений: 36
По умолчанию Странный баг лоадера

Существует система из 4-х классов:
Document.as - главный класс приложения
A.as - класс свфки A.swf
B.as - класс свфки B.swf
ExtLoader.as - класс, создающий композицию со стандартным классом Loader

Итак главная флешка с помощью обычного лоадера грузить в себя A.swf, та в свою очередь с помощью ExtLoader класса грузит B.swf.

Внимание, тут начинается самое интересное:
Если при компиляции главной флешки включить в нее класс ExtLoader, то флешка A.swf загружает B.swf и не может привести ее к классу B.

Если в главную флешку не компилировать класс ExtLoader - все нормально =\


Класс Document.as
Код:
import flash.display.Loader;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.net.URLRequest;	

	//import ru.isky.multiloader.DataLoader;	

	/**
	 * @author ign
	 */
	public class Document extends MovieClip {

		private var loader : Loader;

		public function Document() {
			ExtLoader;
			
			//trace(getDefinitionByName('ru.isky.test::A'));
			//trace(getDefinitionByName('ru.isky.test::B'));
			loader = new Loader();
			loader.load(new URLRequest('A.swf'));
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onItemLoaded);
		}

		private function onItemLoaded(event : Event) : void {
			//trace(getDefinitionByName('ru.isky.test::A'));
			loader.content['load']();
		}
	}
Класс ExtLoader.as
Код:
import flash.net.URLRequest;	
	import flash.events.EventDispatcher;
	import flash.display.Loader;
	import flash.events.Event;	

	/**
	 * @author ign
	 */
	public class ExtLoader extends EventDispatcher {
		
		private var request : URLRequest;
		public var loader : Loader;		

		public function ExtLoader(url : String) {
			super();
			request = new URLRequest(url);
		}

		public function load() : void {
			loader = new Loader();
			try {
				loader.load(request);
				//startTime = getTimer();
			} catch(loader_error : Error) {
				//error(loader_error);
			}			
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadFile);
		}
		
		private function onLoadFile(event : Event) : void {
			dispatchEvent(new Event(Event.COMPLETE));
		}
	}
Класс A.as
Код:
import flash.display.MovieClip;
	import flash.events.Event;

	/**
	 * @author ign
	 */
	public class A extends MovieClip {

		private var exloader : ExtLoader;

		public function A() {
			trace("A CONSTRUCTOR");
		}

		public function load() : void {
			trace("A.load( : " + arguments + ")");
			exloader = new ExtLoader('B.swf');
			exloader.addEventListener(Event.COMPLETE, loaderComplete);
			exloader.load();
		}

		private function loaderComplete(e : Event) : void {
			trace('is B:', exloader.loader.content is B);
		}
	}
Класс B.as
Код:
import flash.display.MovieClip;	

	/**
	 * @author ign
	 */
	public class B extends MovieClip {
		public function B() {
			trace("B CONSTRUCTOR");
			super();
		}
	}
Тут исходники с классами, чтобы можно было сразу попробовать:
h t t p ://slil.ru/25496050

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

Регистрация: Sep 2002
Сообщений: 30,784
LoaderContext, ApplicationDomain

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

Регистрация: Jan 2008
Сообщений: 36
Благодарю.

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

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

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


 


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


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