舞台上加载一外部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文档类的公开方法的接口类。这样就可以在代码编辑器中看到提示的方法了。

转载于:https://my.oschina.net/changsheng/blog/127984

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Flash中加载外部SWF文件非常简单。首先,确保你已经打开了Flash软件,并新建一个项目。 在主舞台上插入一个“影片剪辑”对象,可以使用Ctrl+M快捷键。将此影片剪辑对象重命名为“loader”。 在“loader”影片剪辑的第一帧上,插入一个空白关键帧。 在第一个关键帧上打开“动作”面板,可以使用F9快捷键。在“动作”面板中输入以下代码来加载外部SWF文件: ``` var myLoader:Loader = new Loader(); var url:URLRequest = new URLRequest("external.swf"); // 替换为你要加载外部SWF文件名 myLoader.load(url); addChild(myLoader); ``` 将“external.swf”替换为你要加载外部SWF文件的路径和文件名。 之后,你可以为加载SWF文件添加相应的事件监听器,以便在加载完成后执行一些操作。例如,你可以在加载完成后执行以下代码: ``` myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete); function onLoadComplete(event:Event):void { trace("外部SWF文件加载完成"); // 在此处添加你想要执行的代码 } ``` 这样,当外部SWF文件加载完成后,控制台会输出“外部SWF文件加载完成”,你可以在注释部分添加你自己的代码,来处理加载完成后的操作。 最后,在主舞台上插入一个按钮,并给它命名为“loadButton”。为该按钮的“点击”事件添加以下代码: ``` loadButton.addEventListener(MouseEvent.CLICK, onClickLoad); function onClickLoad(event:MouseEvent):void { myLoader.load(url); } ``` 这样,当用户点击“loadButton”按钮时,SWF文件会重新加载。 完成以上步骤后,你就成功地在Flash中加载外部SWF文件。你可以根据需要对加载完成后的外部SWF文件进行处理,例如显示、控制动画等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值