![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Feb 2001
Сообщений: 33
|
Создаю Worker из loaderInfo.bytes flex проекта:
worker = WorkerDomain.current.createWorker(_main.stage.loaderInfo.bytes); после загрузки его получаю: Error: Error #3731: This feature is not available within this context. at mx.core::Application/initContextMenu()[E:\dev\4.y\frameworks\projects\mx\src\mx\core\Application.as:1419] at mx.core::Application/initialize()[E:\dev\4.y\frameworks\projects\mx\src\mx\core\Application.as:1060] at TimeOfHeroes/initialize() at mx.managers.systemClasses::ChildManager/childAdded()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\systemClasses\ChildManager.as:189] at mx.managers.systemClasses::ChildManager/initializeTopLevelWindow()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\systemClasses\ChildManager.as:359] at mx.managers::SystemManager/initializeTopLevelWindow()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:3057] at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::kickOff()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2843] at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::preloader_completeHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2723] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.preloaders::Preloader/timerHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\preloaders\Preloader.as:542] at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick() var defaultMenu:ContextMenu = new ContextMenu(); причина ошибки понятна, но как можно ее убрать? примечание - не могу использовать эмбеднутую swf из-за слишком большого ее размера и не могу использовать генерацию swf из класса из-за слишком большого времени генерации. |
|
|||||
|
Регистрация: Feb 2001
Сообщений: 33
|
разгрузить основной поток от сложных вычислений, загрузки тяжелых данных с сервера, их парсинга. Мне вовсе не нужен собственно mxml в worker-е, если Вы об этом, но мне важно чтобы worker имел доступ к большому количеству классов VO (и не только), именно поэтому мне приходится впихивать в worker основной swf.
|
|
|||||
|
Регистрация: Feb 2001
Сообщений: 33
|
никто не говорил о визуальных элементах в worker-e. Спасибо за совет, но в данном случае нужен именно worker.
Так проблему кто-то знает как решить? это один из трех "законных" (описанных в доках Адоби) способов формирования worker-a - использовать для него основную свфку. А вот если эта swf флексовая то Вы получите ошибку, описанную выше. Неужели такая редкая ситуация и никто не знает? |
|
|||||
|
Регистрация: Feb 2001
Сообщений: 33
|
Да почему же, смотрите:
1. Ошибка возникает когда флеш загрузив флексовую свфку инициализирует флексовый Application и в нем создает дефолтное контекстное меню, тут никакой тайны нет. Вопрос как избежать этого действия. 2. байты и с мейна и со стейджа одни и те же. Спасибо за ссылки, но они давно прочитаны и они ни слова не говорят о моей проблеме (worker из mxml). И в видео он создает as3 проект а вовсе не флексовый. Воркеры я создавать умею, они успешно работают. Но с mxml вот такая трудность. Попробуйте создать самый базовый флекс проект, и из него загрузить самого себя как воркер и не получить ошибку: <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
minWidth="955"
minHeight="600"
initialize="onInit();">
<fx:Script>
<![CDATA[
import flash.system.Worker;
import flash.system.WorkerDomain;
private function onInit():void
{
addEventListener(Event.ADDED_TO_STAGE,onAdded);
}
protected function onAdded(event:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE,onAdded);
var d:WorkerDomain=WorkerDomain.current;
var worker:Worker = d.createWorker(loaderInfo.bytes);
worker.start();
}
]]>
</fx:Script>
<s:Button>
</s:Button>
</s:Application>
|
|
|||||
|
Ну так и выносите в worker загрузку и парсинг.Незачем тащить туда Application, он для этого не предназначен.
__________________
משיח לא בא משיח גם לא מטלפן Последний раз редактировалось alatar; 16.07.2013 в 10:02. |
|
|||||
|
Регистрация: Feb 2001
Сообщений: 33
|
Как я уже говорил, эмбедить свфку не вариант, она слишком сильно раздувает конечный файл. Много данных, с которыми надо работать из воркера. Кстати я нашел решение, костыль так сказать. Я создал свой прелоадер и все что надо инициализировать по воркеру - делаю в нем. И происходит это До вышеуказанной ошибки. Для конечного пользователя все работает как надо - и файл мал и все классы доступны. Только вот при отладке эта ошибка все равно вылазит и приходится каждый раз продолжать выполнение после нее. Это печально, но лучше чем ничего. Возможно нормальное решение все же найдется со временем.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:03. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|