zoukankan      html  css  js  c++  java
  • 舞台上加载一外部SWF,舞台如何调用该swf内部方法呢?

    可以使用getDefinitionByName方法,也可以用ApplicationDomain的getDefinition方法,提供获取Class的方法如下:

    1. public function getClass(className:String, domain:ApplicationDomain = null):Class {
    2. if (domain == null) {
    3. domain = ApplicationDomain.currentDomain;
    4. }
    5. if (domain.hasDefinition(className)) {
    6. return domain.getDefinition(className) as Class;
    7. }
    8. return null;
    9. }
    10. var obj:Object = getClass("Called");
    11. obj.method();
    评论 (0)链接 • 2011-11-04

    • 社区维基

      0 票

    • 杨凯冬
      1

    一个Flash中通过AS3代码的Loader对象加载另一个SWF文件,并访问其中的文档类中的方法。
    简单示例:

    主文件:Main.fla, Main.as

    被调用的文件:called.swf, Called.as

    1. package{
    2.  import flash.display.Sprite;
    3.  import flash.net.URLRequest;
    4.  import flash.display.Loader;
    5.  import flash.events.Event;
    6.  public class Main extends Sprite{
    7.  private var loader:Loader;

    8. public function Main(){
    9. loader = new Loader();
    10. loader.load(new URLRequest("called.swf"));
    11. loader.contentLoadInfo.addEventListener(Event.Complete, loadComplete);
    12. }

    13. private function loadComplete(e:Event):void{
    14. var obj:Object = loader.content; // 通过loader.content获取Called类对象,并赋值给Object对象

    15. obj.method(); //调用Called对象的method方法
    16. }
    17.  }
    18. }

    被调用文件: Called.as

    1. package{
    2.  import flash.display.Sprite;
    3.  public class Called extends Sprite{
    4.  }
    5.  public function method():void{
    6. trace("Called对象中的method方法被调用了");
    7.  }
    8. }

    ---------------------输出结果-------------------------

    Called对象中的method方法被调用了


    值得提出注意的地方是obj.method(); 中的“.method(); ”是不能通过代码编辑器提示显示的。

    如果希望能够在代码编辑器中显示,可以在主文件中增加一个接口类,并把加载的loader.content强制转换成该接口类的一个实例。

    如var obj:CalledInterface=loader.content as CalledInterface;
    其中CalledInterface是在主文件中定义的一个拥有被调SWF文档类的公开方法的接口类。这样就可以在代码编辑器中看到提示的方法了。

  • 相关阅读:
    Unique Binary Search Trees(dp)
    Binary Tree Inorder Traversal
    Reverse Linked List II
    O​r​a​c​l​e​1​1​g​自​带​的​S​Q​L​ ​d​e​v​e​l​o​p​e​r​无​法​打​开​解​决​
    英语飙升的好方法
    MyEclipse加入jquery.js文件missing semicolon的错误
    js,jq获取手机屏幕分辨率的宽高
    给标签元素设固定宽高,内部添加滚动条显示
    解决手机端点击input的时候,页面会放大
    支付宝异步回调验证签名
  • 原文地址:https://www.cnblogs.com/bluesea-flash/p/3482306.html
Copyright © 2011-2022 走看看