·您当前的位置:主页 > 技术教程 > AS2与AS3技术 >

[AS3]ApplicationDomain类的应用程序域

时间:2017-06-12 16:45酷播
[AS3]ApplicationDomain类的应用程序域

首先先回顾一下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”:

  1. package { 
  2. import flash.display.Sprite; 
  3. import flash.display.Loader; 
  4. import flash.display.LoaderInfo; 
  5. import flash.NET.URLRequest; 
  6. import flash.display.MovieClip; 
  7. import flash.events.Event; 
  8. //导入ApplicationDomain类 
  9. import flash.system.ApplicationDomain; 
  10.  
  11. public class SunNeon extends Sprite 
  12. private var swfPath:String="loaded.swf"
  13. private var loader:Loader; 
  14. private var ur:URLRequest; 
  15. public function SunNeon() 
  16. loader=new Loader(); 
  17. ur=new URLRequest(swfPath); 
  18. //添加加载完成事件,事件处理函数onCl 
  19. loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onCl); 
  20. loader.load(ur); 
  21. //加载完成事件的处理函数,处理被加载swf文件里的应用程序域 
  22. private function onCl(event:Event):void{ 
  23. //LoaderInfo对象承载载入swf文件的信息 
  24. var swfTarget:LoaderInfo=event.target as LoaderInfo; 
  25. //swfTarget的只读属性applicationDomain返回一个ApplicationDomain 
  26. //创建被加载swf的应用程序域 
  27. var appDomain:ApplicationDomain=swfTarget.applicationDomain as ApplicationDomain; 
  28. //getDefinition方法从指定的应用程序域获取一个公共定义。 
  29. //该定义可以是一个类、一个命名空间或一个函数的定义。 
  30. //其中"myClass"为被加载swf文件里影片剪辑链接属性里的类 
  31. var MCClass:Class=appDomain.getDefinition("myClass") as Class; 
  32. //创建MCClass实例,并返回影片剪辑对象 
  33. var myMCA:MovieClip=(new MCClass()) as MovieClip; 
  34. var myMCB:MovieClip=(new MCClass()) as MovieClip; 
  35. //为新创建的对象制定属性 
  36. myMCA.x=10
  37. myMCA.y=100
  38. myMCA.alpha=0.5; 
  39.  
  40. myMCB.x=0
  41. myMCB.y=200
  42. myMCB.width=70
  43. //使对象显示在容器SunNeon中 
  44. addChild(myMCA); 
  45. addChild(myMCB); 
微信付费直播
酷播云免费在线视频整体解决方案
参与开学季云视频优惠,拿GET2017教育科技大会VIP门票
进入开学季,保利威视推出云视频优惠,云视频套餐、流量超实惠大放“价”就是现在,还可以免费获取GET2017教育科技大会VIP门票哦!