|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
IPlugin.as : Main2.as >> Plugin.swf DocumentClass : package { import flash.display.Sprite; public class Main2 extends Sprite implements IPlugin { public function Main2() { } /* INTERFACE IPlugin */ public function setPosition(x:Number, y:Number):void { trace("x: ", x, ", y: ", y); } } } package { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; import IPlugin; public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point var swfloader:Loader = new Loader(); swfloader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); swfloader.load(new URLRequest("Plugin.swf")); } private function completeHandler(event:Event):void { var plugin:IPlugin = event.target.loader.content as IPlugin; trace("Plugin: ", plugin); plugin.setPosition(10, 15); trace(this.loaderInfo.applicationDomain == event.target.loader.content.loaderInfo.applicationDomain); /// output: false } } }
__________________
Reality.getBounds(this); |
|
|||||
На сколько я помню, приведение к интерфейсу не сработает, если SecurityDomain'ы разные. Именно security, не application.
Что до ApplicationDomain'ов, то там вообще все не очень прозрачно.
__________________
...вселенская грусть |
|
|||||
Похоже здесь ближе всех к истине оказался gloomyBrain, но речь о песочнице
applicationDomain для этого тоже нужен. Вот, нашел реальный пример из одного своего приложения: if (Security.sandboxType == Security.REMOTE) { var context:LoaderContext = new LoaderContext(); context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); loader.loadBytes(byteArray, context); } с контекстом, выдаст true |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Но если обе флэшки лежат на одном домене — проблем нет.
Файлы те же, только код обработчика поменял на вывод в текстфилд private function completeHandler(event:Event):void { var plugin:IPlugin = event.target.loader.content as IPlugin; var txt:TextField = new TextField(); addChild(txt); txt.x = 100, txt.y = 100; txt.width = 500; txt.height = 500; txt.text = (plugin != null) ? " IPlugin" : " null"; txt.appendText("\n Security sandbox is REMOTE: " + (Security.sandboxType == Security.REMOTE).toString()); txt.appendText("\n Plugin: " + (plugin as Object).toString()); txt.appendText("\n Plugin is IPlugin: " + (plugin is IPlugin).toString()); txt.appendText("\n applicationDomain равны? : " + (this.loaderInfo.applicationDomain == event.target.loader.content.loaderInfo.applicationDomain).toString()); plugin.setPosition(10, 15); }
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 24.08.2012 в 11:58. Причина: добавил пример |
Часовой пояс GMT +4, время: 20:20. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|