読み込んだSWFの中の関数を制御

WindowsだとDLLみたいな事をSWFでしようと思います。

■読み込まれるSWFを用意します。
今回はMove関数を親のSWFから制御するようにします。
「ChildProc.as」

package  
{
	import	flash.display.*;
	import	flash.text.*;

	public class ChildProc extends Sprite 
	{
		private	var	textField:TextField= new TextField();
		
		public function ChildProc() 
		{
			textField.text	="test";
			addChild(textField);			
		}

		public function Move( x:int, y:int ):void
		{
			textField.x = x;
			textField.y = y;
		}
	}	
}

■SWFを読み込み、Move関数を呼び出すプログラム
「Main.as」

package 
{
	import	flash.events.*;
	import	flash.display.*;
	import	flash.net.*;
	import	flash.text.*;

	public	class Main extends Sprite {
		private	var	loader:Loader	= new Loader();
		public	function	Main()
		{
			addChild(loader);
			with( loader.contentLoaderInfo ){
				addEventListener( Event.INIT,loaderInfoInitFunc);
			}
			loader.load( new URLRequest("ChildProc.swf"));			
		}

		private function loaderInfoInitFunc (event:Event):void {
			var cPric:ChildProc;
			
			cPric = loader.content as ChildProc;
			cPric.Move( 100, 100 );
		}
	}
}

データを読み込みが確認された後に

cPric = loader.content as ChildProc;
cPric.Move( 100, 100 );

とキャストしてから、Moveを呼び出すことが可能です。


■読み込みを待たないで「Move」を実行しても、なにも起こりません(失敗プログラム)
「Main.as」

package 
{
	import	flash.events.*;
	import	flash.display.*;
	import	flash.net.*;
	import	flash.text.*;

	public	class Main extends Sprite {
		private	var	loader:Loader	= new Loader();
		public	function	Main()
		{
			var cPric:ChildProc;
			
			addChild(loader);
			loader.load( new URLRequest("ChildProc.swf"));
			
			cPric = loader.content as ChildProc;
			cPric.Move( 100, 100 ); //読み込み終了を待っていないので、なにもおこらないです
		}
	}
}