[AS3]as3中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;
- //CuPlayer.com导入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);
- //CuPlayer.com添加加载完成事件,事件处理函数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
- //CuPlayer.com创建被加载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;
- //CuPlayer.com为新创建的对象制定属性
- myMCA.x=10;
- myMCA.y=100;
- myMCA.alpha=0.5;
- myMCB.x=0;
- myMCB.y=200;
- myMCB.width=70;
- //CuPlayer.com使对象显示在容器SunNeon中
- addChild(myMCA);
- addChild(myMCB);
- }
- }
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例