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);
    }
    }
    }

  • 相关阅读:
    1046 Shortest Distance (20 分)(模拟)
    1004. Counting Leaves (30)PAT甲级真题(bfs,dfs,树的遍历,层序遍历)
    1041 Be Unique (20 分)(hash散列)
    1036 Boys vs Girls (25 分)(查找元素)
    1035 Password (20 分)(字符串处理)
    1044 Shopping in Mars (25 分)(二分查找)
    onenote使用小Tip总结^_^(不断更新中...)
    1048 Find Coins (25 分)(hash)
    三个故事
    领导者的举止
  • 原文地址:https://www.cnblogs.com/atong/p/2877251.html
Copyright © 2011-2022 走看看