Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   В какой ApplicationDomain грузит файл Loader если LoaderContext не указан? (http://www.flasher.ru/forum/showthread.php?t=125627)

Exey 28.05.2009 16:47

В какой ApplicationDomain грузит файл Loader если LoaderContext не указан?
 
В photo1.swf и photo2.swf лежат по картинке c Linkage 'Photo'.

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

Так куда же попадает файл загруженный без указания 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) ) );
}


etc 28.05.2009 17:44

Нужно оба грузить без контекста или с новым доменом.

Exey 28.05.2009 17:50

Это понятно. Интересно почему так?

etc 28.05.2009 17:57

Ну потому что в основном домене приложения объявляется класс Photo. После этого переопределить его нельзя.


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

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