Цитата:
|
Если подгружаемая SWF имеет другой ApplicationDomain то интерфейс не прокатит, пока приложение не будет загружено в тот же домен
|
Смелое утверждение.
IPlugin.as :

Код AS3:
package
{
public interface IPlugin
{
function setPosition(x:Number, y:Number):void;
}
}
Main2.as >> Plugin.swf DocumentClass :

Код AS3:
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);
}
}
}
Main.as :

Код AS3:
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
}
}
}