Форум 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=212326)

AsCen Veddge 18.01.2016 22:56

Как подключить класс из swf на этапе выполнения?
 
При загрузке одного swf в другой (лоадер+апликэйшн домейн) его класс не определяется как класс на этапе компиляции. (Type was not found or was not a compile-time constant: Slut)
Код:

...
        ldr = new Loader();
        var req:URLRequest = new URLRequest("../bin/Slut.swf");
            var appDomainB:ApplicationDomain = ApplicationDomain.currentDomain;
        var ldrContext:LoaderContext = new LoaderContext(false, appDomainB);
            ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            ldr.load(req, ldrContext);
        }
                private function completeHandler(event:Event):void
        {
                var Sluts:Class = event.target.applicationDomain.getDefinition("Slut") as Class;
                var mySlut:Sluts = Sluts(event.target.content);

IDE:FD,
use network services: false,
фактически это пример использования метода из загруженного swf из документации adobe...
Вопрос: что не так с настройками FlashDevelop? Или нужно что-то прописать в Slut?

дополнение: остальные примеры с applicationDomain из документации также не работают (по другому - другие ошибки, но принцип тот же - не видит Slut как класс).

Добавлено через 30 часов 56 минут
итерационным методом был получен следующий результат:
Код:

      var mySlut:*= new Sluts();
тогда методы из загруженной swf Slut работают.
кроме того, в заголовке класса Slut установлено:
Код:

      /**
    * @mxmlc accessible=true
    *
    */

, но это, наверное, ни при чём, как и use network service.

in4core 21.01.2016 14:59

Код AS3:

public function addLibrary(loaderinfo:LoaderInfo):void 
                {
                        var info:ApplicationDomain = loaderinfo.applicationDomain;
                        var cls:Class = null;
 
 
                        cls = info.getDefinition("HUD3") as Class;
 
                        hud = new cls() as MovieClip;
 
                        history = info.getDefinition("HistorySymbol");
 
 
 
                        cls = info.getDefinition("GameGFX") as Class;
                        back = new cls() as MovieClip;

И т.п.

gloomyBrain 21.01.2016 16:36

Посмотрите вот эту тему: http://www.flasher.ru/forum/showthread.php?t=144282
Ну и почитайте про политики безопасности, все дело в них.

undefined 21.01.2016 16:41

Вложений: 1
Sluts :)

Rzer 23.01.2016 02:44

я всегда использую getDefinitionByName, попробуй с ним

AsCen Veddge 01.02.2016 17:39

Проблема была в том, что фд не принимал класс из загруженной свф-ки.
А сейчас он перестал понимать нормальный код и начал выдавать совершенно причудливые ошибки, при каждой попытке компиляции разные. Пришлось его снести. Поэтому текущий вопрос такой: как установить пятый Флешдевелоп в стэндалоне режиме? Не могли бы благородные доны и доньи подсказать толковые гайды и доки по настройке ФДшечки? Спасибо.
p.s.:класс слут был назван столь причудливо не только из фривольных соображений, но дабы обеспечить уникальность именования оного.

Rzer 01.02.2016 18:52

Если вопрос, про определение классов кодом, то нужно компилисть внешний проект в swf и swc. Далее подключать swc (Правой кнопкой > Add to library), а затем в настройках выбирать External Library (Правой кнопкой > опции). И грузить swf в текущий ApplicationDomain

AsCen Veddge 02.02.2016 10:06

Вопрос уже про настройку\переустановку Flashdevelop, потому что он уже находит ошибку в таком коде:
Код:

var timer:Timer;
timer:Timer = new Timer(1000,0);


caseyryan 02.02.2016 10:55

Вряд ли дело в FD. Скорее всего Flex / AIR sdk подключен не правильно
кстати система случайно не 8ка 64 битная?

Wolsh 02.02.2016 11:56

Цитата:

потому что он уже находит ошибку в таком коде:
И всегда находил. И будет находить после переустановки.


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

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