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

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

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

Регистрация: Jun 2006
Сообщений: 78
Question В какой ApplicationDomain грузит файл Loader если LoaderContext не указан?

В photo1.swf и photo2.swf лежат по картинке c Linkage 'Photo'.

Если мы грузим photo1.swf указав в LoaderContext текущий домен, а photo2.swf не указывая LoaderContext, то потом при доставании картинки из домена photo2.swf почему-то кладется картинка из photo1.swf.

Так куда же попадает файл загруженный без указания LoaderContext (в текущем домене его нет)?

Код AS3:
static private var cache:Object = { }; // Storing loaded ApplicationDomains here 
private var loader:Loader = new Loader();
private var context:LoaderContext = new LoaderContext( false, ApplicationDomain.currentDomain );
private var loadQueue:Array = [ "photo1.swf", "photo2.swf" ];
private var loadQueueIndex:uint = 0;
 
public function Main() {
	loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onLoadComplete );
	loadNextFile();
}
private function loadNextFile():void {
	var request:URLRequest = new URLRequest( loadQueue[loadQueueIndex] );
	if (loadQueue[loadQueueIndex] == "photo1.swf") 
	  loader.load( request, context );  // Loading photo1.swf with context
	else 
	  loader.load( request ); // Loading photo2.swf without context
}
private function onLoadComplete(e:Event):void {
	// Put domain into hash
	cache[loadQueue[loadQueueIndex]] = loader.contentLoaderInfo.applicationDomain;
	// Trying to load next file
	loadQueueIndex++;
	if (loadQueueIndex < loadQueue.length) {
		loadNextFile();
	} else {
		loader.contentLoaderInfo.removeEventListener( Event.COMPLETE, onLoadComplete );
		onCompleteAll();
	}
}
private function onCompleteAll():void {
	// Taking and placing 'Photo' from domain of photo2, BUT IN FACT WILL PLACED PHOTO1!! :(
	var Photo2Class:Class = cache["photo2.swf"].getDefinition("Photo");
	addChild( new Bitmap( new Photo2Class(0, 0) ) );
}

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

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

Старый 28.05.2009, 17:50
Exey вне форума Посмотреть профиль Отправить личное сообщение для Exey Найти все сообщения от Exey
  № 3  
Ответить с цитированием
Exey

Регистрация: Jun 2006
Сообщений: 78
Это понятно. Интересно почему так?

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

Регистрация: Sep 2002
Сообщений: 30,787
Ну потому что в основном домене приложения объявляется класс Photo. После этого переопределить его нельзя.

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

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

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


 


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


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