zoukankan      html  css  js  c++  java
  • AS3.0中通过ApplicationDomain类获得被加载swf

    首先先回顾一下FLASH的OO构成。
    对于FLASH,我们可以把任何的可视化元件都看成某个类文件的具体实例,包括swf文件。
    我们可以把swf文件看成一个类的具体实例,而它里面拥有个个其他类的实例对象,例如:
    我们新建一个loaded.fla文件,然后我们建立一个影片剪辑元件,你可以在它的内部做一些动画处理,打开库,单击元件右建,选择“链接”打开“链接属性”,在类的输入框里我们键入“myClass”。

     

    这样一来我们就可以把这个元件作为一个类--myClass。也就是说我们可以通过new来构建这个元件的具体实例并显示在舞台,如:

    var test:myClass=new myClass();
    addChild(test);

    然而ApplicationDomain类能够获得swf文件的应用程序域,通过getDefinition方法可以从指定的应用程序域获取一个公共定义。 该定义可以是一个类、一个命名空间或一个函数的定义。

    下面举个例子,我们新建一个.fla文件,名为doc.fla,现在我们要在doc.fla文件里加载上面发布的loaded.swf文件,然后通过ApplicationDomain来获得loaded.swf文件中myClass文件的定义,并在doc.fla中new两个具体实例。doc.fla的文档类“SunNeon”:

    package {
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.net.URLRequest;
    import flash.display.MovieClip;
    import flash.events.Event;
    //导入ApplicationDomain类
    import flash.system.ApplicationDomain;

    public class SunNeon extends Sprite
    {
    private var swfPath:String="loaded.swf";
    private var loader:Loader;
    private var ur:URLRequest;
    public function SunNeon()
    {
    loader=new Loader();
    ur=new URLRequest(swfPath);
    //添加加载完成事件,事件处理函数onCl
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onCl);
    loader.load(ur);
    }
    //加载完成事件的处理函数,处理被加载swf文件里的应用程序域
    private function onCl(event:Event):void{
    //LoaderInfo对象承载载入swf文件的信息
    var swfTarget:LoaderInfo=event.target as LoaderInfo;
    //swfTarget的只读属性applicationDomain返回一个ApplicationDomain
    //创建被加载swf的应用程序域
    var appDomain:ApplicationDomain=swfTarget.applicationDomain as ApplicationDomain;
    //getDefinition方法从指定的应用程序域获取一个公共定义。 
    //该定义可以是一个类、一个命名空间或一个函数的定义。
    //其中"myClass"为被加载swf文件里影片剪辑链接属性里的类
    var MCClass:Class=appDomain.getDefinition("myClass") as Class;
    //创建MCClass实例,并返回影片剪辑对象
    var myMCA:MovieClip=(new MCClass()) as MovieClip;
    var myMCB:MovieClip=(new MCClass()) as MovieClip;
    //为新创建的对象制定属性
    myMCA.x=10;
    myMCA.y=100;
    myMCA.alpha=0.5;

    myMCB.x=0;
    myMCB.y=200;
    myMCB.width=70;
    //使对象显示在容器SunNeon中
    addChild(myMCA);
    addChild(myMCB);
    }
    }
    }

  • 相关阅读:
    lucene 3.0.2 search 各种各样的Query类型
    lucene 3.0.2 中文分词
    java 文件读写
    java 从args[]中赋值和程序直接赋值不一样?
    java 中文转换成Unicode编码和Unicode编码转换成中文
    Java栈与堆一篇好文
    lucene 3.0.2 操作进阶
    Lucene实战(第2版)》
    java工程包的命名(-dev.jar,-javadoc.jar,jar)
    POJ 3304 Segments (线段和直线相交 + 思维)
  • 原文地址:https://www.cnblogs.com/atong/p/2877251.html
Copyright © 2011-2022 走看看