読み込んだ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 ); //読み込み終了を待っていないので、なにもおこらないです } } }