舞台上加载一外部SWF,舞台如何调用该swf内部方法
可以使用getDefinitionByName方法,也可以用ApplicationDomain的getDefinition方法,提供获取Class的方法如下:
public function getClass(className:String,domain:ApplicationDomain = null):Class { if (domain == null) { domain = ApplicationDomain.currentDomain; } if (domain.hasDefinition(className)) { return domain.getDefinition(className) as Class; } return null; } var obj:Object = getClass("Called"); obj.method(); 一个Flash中通过AS3代码的Loader对象加载另一个SWF文件,并访问其中的文档类中的方法。 主文件:Main.fla,Main.as 被调用的文件:called.swf,Called.as
package{ import flash.display.Sprite; import flash.net.URLRequest; import flash.display.Loader; import flash.events.Event; public class Main extends Sprite{ private var loader:Loader; public function Main(){ loader = new Loader(); loader.load(new URLRequest("called.swf")); loader.contentLoadInfo.addEventListener(Event.Complete,loadComplete); } private function loadComplete(e:Event):void{ var obj:Object = loader.content; // 通过loader.content获取Called类对象,并赋值给Object对象 obj.method(); //调用Called对象的method方法 } } }被调用文件: Called.as
package{ import flash.display.Sprite; public class Called extends Sprite{ } public function method():void{ trace("Called对象中的method方法被调用了"); } } ---------------------输出结果------------------------- Called对象中的method方法被调用了 值得提出注意的地方是obj.method(); 中的“.method(); ”是不能通过代码编辑器提示显示的。 如果希望能够在代码编辑器中显示,可以在主文件中增加一个接口类,并把加载的loader.content强制转换成该接口类的一个实例。 如var obj:CalledInterface=loader.content as CalledInterface; 其中CalledInterface是在主文件中定义的一个拥有被调SWF文档类的公开方法的接口类。这样就可以在代码编辑器中看到提示的方法了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |