Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   getDefinitionByName в worker не работает (http://www.flasher.ru/forum/showthread.php?t=206783)

Vreden 02.03.2014 18:37

getDefinitionByName в worker не работает
 
Код AS3:

public static function registerClassAliasByClassName(className:String):void
                {
                        var ClassReference:Class = getDefinitionByName(className) as Class;
                        var commandAliasRegister:CommandAliasRegister = new ClassReference();
                        commandAliasRegister.register();
                }

Проблема в следующем, данный метод вызывается в первичном и вторичном потоке, он регистрирует классы, которые будут передаваться между потоками. В первичном потоке он работает, но во вторичном я получаю ошибку:

Код AS3:

ReferenceError: Error #1065: Variable LoaderCommandAliasRegister is not defined.
        at global/flash.utils::getDefinitionByName()

Я так понимаю, что это из-за разных ApplicationDomain, есть ли способ решить проблему?

alatar 03.03.2014 17:13

При компиляции воркера добавьте необходимый класс в опциях компилятора (-includes ...)

Vreden 03.03.2014 18:00

Цитата:

Сообщение от alatar (Сообщение 1161059)
При компиляции воркера добавьте необходимый класс в опциях компилятора (-includes ...)

Воркер компилируется средствами FB, я указываю класс существующего проекта, который будет компилироваться в Worker, все, что мне доступно, это выбрать, будет ли воркер встроенный или динамически подгруженный. Т.е. мой воркер это не отдельный проект с параметрами компиляции.

К тому же вся суть динамической регистрации сводится именно к повторному использованию кода, т.е. я кормлю воркер объектами классов команд, воркер предварительно динамически регистрирует классы, которые используются в объекте команды, получает команду и выполняет ее, соответственно уведомляет клиентский код о прогрессе и выполнении. Воркер сможет выполнять любую работу и мне не придется больше работать непосредственно с ним, а только написать реализацию команды и скормить ее.

Если я буду мертво зашивать используемые классы, весь смысл затеи теряется.

Кажется я нашел способ, который вероятно сработает, это использовать основную флешку и в качестве вторичного потока так же (используемые классы по идее будут доступны потоку), определяя ход выполнения программы свойством isPrimordial, отпишусь позднее.

alatar 03.03.2014 18:43

1. Ничто не мешает сделать его отдельным проектом.
2. Откуда ему взять эти классы, если они не доступны при компиляции?
3. Можете вынести их в отдельную библиотеку, тогда не придется их указывать по отдельности. Ну и см. п. 2.
4. Тут не зная специфики проекта сказать нечего.


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

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