Показать сообщение отдельно
Старый 23.08.2012, 20:18
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 1  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Если подгружаемая 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
		}
	}
}
__________________
Reality.getBounds(this);