|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2009
Сообщений: 35
|
Политика безопасности Flash-плеера и не только
Привет.
Помогите решить проблему, бьюсь уже часа три, не меньше. Что хочу сделать? Хочу сделать некий wrapper. Т.е. флешка грузит еще одну флешку внутрь себя, далее идет работа с подгруженной флешкой (addChild, интерактив). Использую следующий код в wrapper'е: public function Main():void { if (stage) init(); else this.addEventListener(Event.ADDED_TO_STAGE, init); } public function init(event:Event = null):void { this.removeEventListener(Event.ADDED_TO_STAGE, init); stage.dispatchEvent(new Event(Event.DEACTIVATE)); stage.dispatchEvent(new Event(Event.ACTIVATE)); loadExeption(); } public function loadExeption():void { Security.allowDomain("*"); Security.allowInsecureDomain("*"); loaderContext = new LoaderContext(); loaderContext.checkPolicyFile = true; if (Security.sandboxType != 'localTrusted') { loaderContext.applicationDomain = ApplicationDomain.currentDomain; loaderContext.securityDomain = SecurityDomain.currentDomain; } m_loader = new Loader(); m_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); m_loader.load(new URLRequest("xxx.ru/my.swf"), loaderContext); } public function onCompleteHandler(e:Event):void { addChild(m_loader); } А что не так? А не так то, что это все не работает. После запуска такого кода флеш начинает жестоко личить в память, и складывается ощущение, что он загружает сам себя. Адрес wrapper'a (Preloader'a): xxx.ru/preloader.swf (условно). Адрес подгружаемой swf-шки: xxx.ru/my.swf (условно). Лежат на одном домине, с ними рядом лежит: crossdomain.xml, листинг: <cross-domain-policy> <site-control permitted-cross-domain-policies="master-only"/> <allow-http-request-headers-from domain="xxx.ru" headers="*"/> <allow-access-from domain="xxx.ru" to-ports="80"/> </cross-domain-policy> ... var params = { menu: "false", scale: "noScale", allowFullscreen: "true", allowScriptAccess: "always", allowNetworking: "always", bgcolor: "#000000" }; ... swfobject.embedSWF("preloader.swf", "altContent", "600", "580", "10.0.0", "expressInstall.swf", flashvars, params, attributes); Самое интересное, что локально это все работает нормально. Т.е. заливаю на хостинг my.swf, локально компилирую preloader.swf — работает на ура. Как стоит мне залить preloader.swf на хостинг, то возникает такая ситуация. Сталкивался кто? |
|
|||||
Регистрация: Oct 2005
Сообщений: 97
|
Привет, первое, я бы не стал лодер в аддЧайлд совать (addChild(m_loader) а его контент. Проверь права доступа к файлу на хостинге.
|
|
|||||
Регистрация: Jun 2009
Сообщений: 35
|
Спасибо дорогие друзья, особенно fish_r.
Действительно, сменил название главного класса в флешке с Main на Wrapper - все заработало. |
|
|||||
Цитата:
А надо было разобраться почему так происходит и просто поменять applicationDomain, в который идет загрузка
__________________
...вселенская грусть |
|
|||||
не понимаю - решаете проблему (создания однояйцевых близнецов) созданием другой (потерей доступа к типам загруженных классов)?
|
|
|||||
Причиной проблемы является то, что в ApplicationDomain уже есть класс с таким именем.
Возможны 2 решения: а) переименовать класс б) загрузить в домен, в котором класса с таким именем нет Решение б) является универсальным, т.к. один модуль по определению не будет пересекаться с другим, при любых названиях классов. Более того, при таком подходе модуль можно выгрузить. Решение а) является прямолинейным и не позволяет Вам делать одинаковые названия классов в разных модулях Цитата:
__________________
...вселенская грусть |
|
|||||
Встреча двух классов с одинаковым именем в одном домене - есть уже признак кривизны. Исправлять надо то, что криво, и автор, в данном случае, имеет такую возможность, а вы предлагаете "лечить" ситуацию "костылями", по факту.
То что называется проверкой типов на этапе исполнения, напр. я уже не смогу обратиться к методу загруженного класса Мне придётся обходить "строгую проверку" приведя к object или перем. к *, и то, и другое, пусть даже формально, плохо сказывается на быстродействии... А ты о каких типах подумал? |
|
|||||
Цитата:
Цитата:
Однако, т.к. домен (а значит и наличие в нем класса с каким-то именем) определяется именно загружающим модулем, то свой способ я считаю верным, а Ваш - нет. Цитата:
__________________
...вселенская грусть |
|
|||||
@gloomy можешь говорить мне "ты" не опасаясь панибратства
Цитата:
Я имел ввиду вообще то вот это. Цитата:
Цитата:
И, кстати, не пойму: как мне поможет интерфейс в отсутствии доступа к типам? Вот это - костыль: Последний раз редактировалось fish_r; 15.06.2011 в 23:00. |
Часовой пояс GMT +4, время: 03:53. |
|
« Предыдущая тема | Следующая тема » |
Теги |
flash , loader , loaderContext , безопасность |
|
|