Встраивание нескольких экземпляров компонента Flash в приложение Flex - PullRequest
1 голос
/ 05 марта 2009

У меня есть флеш-приложение (чистый AS, без фреймворка Flex), которое я хотел бы встроить в флекс-приложение с помощью SWFLoader.

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

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

1 Ответ

2 голосов
/ 07 марта 2009

Вы хотите загрузить SWF-файл в собственный домен приложения (не дочерний), чтобы избежать конфликта имен.

Существует три типа доменов приложений:

var swfLoader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();

// child SWF adds its unique definitions to
// parent SWF; both SWFs share the same domain
// child SWFs definitions do not overwrite parents
loaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);

// child SWF uses parent domain definitions
// if defined there, otherwise its own
loaderContext.applicationDomain = ApplicationDomain.currentDomain;

// child SWF domain is completely separate and
// each SWF uses its own definitions
loaderContext.applicationDomain = new ApplicationDomain();

// Load the swf file
swfLoader.load(new URLRequest("file.swf"), loaderContext);

Я бы предложил использовать первый метод, поскольку он не будет перезаписывать определения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...