![]() |
Передать определение класса в фоновый worker.
Помогите передать определение класса в фоновый выполняющийся swf. (Worker)
Вообщем, я пробую передать ссылку на класс через канал: Главный swf: Код AS3:
Код AS3:
Такая дилема. Мотивы этой историй в том, что-бы 1 раз создать класс, который бы запускал отдельный поток с возможностью выгрузки в него реализаций (Классов) и последующей передачи выполнения разных задач с этими классами. Что-бы не делать каждый раз отдельный swf для конкретной задачи, так-как Worker принимает на вход swf. |
Насколько я понимаю, передать ссылку на класс, которого в воркере нет, нельзя. Просто потому что Worker - это отдельный инстанс виртуальной машины. Тем не менее, можно передать байткод, в котором класс описан.
|
Я так думал, что передавая Class - он (определение) сериализуется и передастся в другой воркер. Но на деле, во втором воркере получаю уже Object а не Class.
Ок, как тогда записать определение класса в байткод и затем обратно собрать и зарегистрировать? Тут вопрос получается такой: как в рантайме создать определение нового класса из байткода. Вот простенький пример с записью класса в байткод: (Тоже самое происходит при передаче его в воркер) Код AS3:
|
Цитата:
По второму вопросу все просто: ApplicationDomain.getDefinition(). То есть просто берем Loader, делаем ему loadBytes(mySwfBytes) и получаем Loader с загруженной в него swf-кой. mySwfBytes - это то, что будем передавать между потоками. Там собственно и будет наш байткод. А вот по первому вопросу все сложнее - я вижу 2 решения. 1) Разбить нужный блок приложения на кучу swf-ок (1 класс == 1 swf). Тогда сможем отсылать в воркер нужные нам классы по одному. 2) Генерить swf "на лету". Инструменты для этого есть, можно нагуглить. ЗЫ Не совсем ясен контекст задачи, возможно есть другие пути. |
Спасибо. Я решил делать отдельный swf для каждой конкретной задачи/задач.
|
| Часовой пояс GMT +4, время: 09:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.