Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Получение класса из загруженной swf (http://www.flasher.ru/forum/showthread.php?t=170414)

MrAngel 24.10.2011 15:33

Получение класса из загруженной swf
 
Зравствуйте! Прошу помочь тех, кто уже сталкивался с подобной проблемой, решить ее..

Собственно сначало код:
Код AS1/AS2:

//loader.swf грузит game.swf
 
var loaderContext : LoaderContext = new LoaderContext(true, ApplicationDomain.currentDomain);
 
gameLoader = new Loader();
gameLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, gameLoadComleteHandler);
gameLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, gameLoadProgressHandler);
gameLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, gameLoadErrorHandler);
gameLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, gameLoadComleteHandler);
 
gameLoader.load(new URLRequest(GAME_URL),loaderContext);
 
...
 
protected static function gameLoadComleteHandler(e:Event) : void {
 
    var GameClass:Class;
 
    try {
          getDefinitionByName("ru.unmedia.container.GameMain") as Class;
    } catch (e:Error) {
        log('definition not found','('+e.message+')');
    }
    if(GameClass)
    {
        gameMain = new GameClass();
                        if(userDataLoaded){
                                initGameScreen();
                        }
                        gameLoaded = true;
    }
}

теперь собсно трабл:
если в переменной GAME_URL передаешь адрес swf-файла относительно файла загрузчика(например loader.swf в одной папке с game.swf - тогда GAME_URL содержит просто "game.swf"), то все проходит без ошибок.

а если разместить swf-файл на каком-либо сервере и указать путь до него в переменной GAME_URL (например так: "www.mysite.ru/game.swf"), то возникает ошибка в строчке:
getDefinitionByName("ru.unmedia.container.GameMain") as Class;

ошибка: 'Error #1065: Переменная GameMain не определена.'

:eek::wacko:

smithy 24.10.2011 15:40

попробуйте
Код AS3:

gameLoader.contentLoaderInfo.applicationDomain.getDefinition("ru.unmedia.container.GameMain") as Class;

UPD:
+ попробовать в контексте указать SecurityDomain.currentDomain
+ в загружаемой флешке прописать Security.allowDomain("*");

dimarik 25.10.2011 10:18

http://www.flasher.ru/forum/blog.php?b=332


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

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