Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.07.2013, 14:29
Troglodit вне форума Посмотреть профиль Отправить личное сообщение для Troglodit Найти все сообщения от Troglodit
  № 1  
Ответить с цитированием
Troglodit

Регистрация: Feb 2001
Сообщений: 33
Question создать Worker из mxml ?

Создаю 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()
в этой строке (Application.as:1419) в сорсах Адоби находится вот что:
var defaultMenu:ContextMenu = new ContextMenu();

причина ошибки понятна, но как можно ее убрать?

примечание - не могу использовать эмбеднутую swf из-за слишком большого ее размера и не могу использовать генерацию swf из класса из-за слишком большого времени генерации.

Старый 14.07.2013, 10:46
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Чем вам, в данном случае, должен помочь worker?
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 14.07.2013, 15:22
Troglodit вне форума Посмотреть профиль Отправить личное сообщение для Troglodit Найти все сообщения от Troglodit
  № 3  
Ответить с цитированием
Troglodit

Регистрация: Feb 2001
Сообщений: 33
разгрузить основной поток от сложных вычислений, загрузки тяжелых данных с сервера, их парсинга. Мне вовсе не нужен собственно mxml в worker-е, если Вы об этом, но мне важно чтобы worker имел доступ к большому количеству классов VO (и не только), именно поэтому мне приходится впихивать в worker основной swf.

Старый 14.07.2013, 17:36
Troglodit вне форума Посмотреть профиль Отправить личное сообщение для Troglodit Найти все сообщения от Troglodit
  № 4  
Ответить с цитированием
Troglodit

Регистрация: Feb 2001
Сообщений: 33
никто не говорил о визуальных элементах в worker-e. Спасибо за совет, но в данном случае нужен именно worker.

Так проблему кто-то знает как решить? это один из трех "законных" (описанных в доках Адоби) способов формирования worker-a - использовать для него основную свфку. А вот если эта swf флексовая то Вы получите ошибку, описанную выше. Неужели такая редкая ситуация и никто не знает?

Старый 14.07.2013, 20:16
Troglodit вне форума Посмотреть профиль Отправить личное сообщение для Troglodit Найти все сообщения от Troglodit
  № 5  
Ответить с цитированием
Troglodit

Регистрация: 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>

Старый 16.07.2013, 00:16
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Ну так и выносите в worker загрузку и парсинг.Незачем тащить туда Application, он для этого не предназначен.
__________________
משיח לא בא
משיח גם לא מטלפן


Последний раз редактировалось alatar; 16.07.2013 в 10:02.
Старый 16.07.2013, 02:33
Troglodit вне форума Посмотреть профиль Отправить личное сообщение для Troglodit Найти все сообщения от Troglodit
  № 7  
Ответить с цитированием
Troglodit

Регистрация: Feb 2001
Сообщений: 33
Как я уже говорил, эмбедить свфку не вариант, она слишком сильно раздувает конечный файл. Много данных, с которыми надо работать из воркера. Кстати я нашел решение, костыль так сказать. Я создал свой прелоадер и все что надо инициализировать по воркеру - делаю в нем. И происходит это До вышеуказанной ошибки. Для конечного пользователя все работает как надо - и файл мал и все классы доступны. Только вот при отладке эта ошибка все равно вылазит и приходится каждый раз продолжать выполнение после нее. Это печально, но лучше чем ничего. Возможно нормальное решение все же найдется со временем.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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