as3.0中通过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”:

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

时间: 2024-08-03 09:21:16

as3.0中通过ApplicationDomain类获得被加载应用程序域的相关文章

as3.0中的Tween类|flash缓冲效果讲解

最近做的东西,对于效果编程比较多,特别是缓冲,加速度等效果,特意研究了一下Tween类,写篇教程分享 给大家,算是过年送给大家的新年礼物! 下面是官方写的fl.transitions.Tween类:可以先尝试看一下这段代码的写法,用这个方法去看:从构造函数看起,假设我使用了该类new Tween(mc,"x",Regular.easeOut,0,200,4);结合adobe的帮助文档,当初始化实例的时候,便对对象mc的x进行Regular.easeOut操作,具体是从0值到200 值,

AS3.0中Tween类的基础 教程

AS3.0中Tween类的基础 教程 写个关于ActionScript3.0 中的Tween类的小教程吧,还是抛砖引玉,偷摸追赶一下潮流.(个人认为AS3.0是以后支持互动设计的主流技术) 说道Tween类,看字面的意思就是实现补间动画的.在Flash CS3中,Adobe已经为大家开发好了一套可以轻松实现运动效果的类.这套类包位于fl.transition.*中.其实,这些包 中的类效果的原理都是监听ENTER_FRAME事件的.在动画播放时,按帧频改变目标的属性,从而产生动画的效果. 负责动

Flash AS3.0中is,as运算符

运算 (1) is运算符 在AS3.0新增加的is运算符,主要功能是判断一个变量或者等式是不是等于给定的数据类型,在以前的版本中,有instanceof来实现相同的功能. 但是is 运算符可以帮助我们确定数据类型,还可以判断类的继承关系,包括对于接口的继承执行. 可以看如下实例: var mySprite:Sprite = new Sprite();  trace(mySprite is Sprite); //output:true  trace(mySprite is DisplayObjec

As3.0中的反射

给你一个代码代表"类"完整路径的字符串,比如"flash.text.TextField",你能用AS3.0在舞台上动态创建一个该类的实例么?(用var txt:TextField = new TextField()作弊的不算) var txtClass:Class = getDefinitionByName("flash.text.TextField") as Class; var txtInstance:TextField = new txtC

ASP.NET2.0中的ClientScriptManager 类用法

asp.net|client ASP.NET2.0中的ClientScriptManager 类用法-如何添加客户端事件 在ASP.NET2.0中,ClientScriptManager 类通过键 String 和 Type 唯一地标识脚本.具有相同的键和类型的脚本被视为重复脚本.因此,我们可以使用脚本类型来避免混淆可能用在页中的来自不同用户控件的相似脚本. <html>  <head>    <title>ClientScriptManager Example<

Flash AS3.0中uint数据类型做循环判断应注意

数据|数据类型|循环 在AS3.0中增加了新的数据类型uint,其表示正整数.我们可以先看一下下面的例子: for(var i:uint = 5;i>=0;i--)  {  trace("test");  }  运行该代码将会产生一个运行错误:"Error: Error #1502: 脚本的执行时间已经超过了 15 秒的默认超时设置.".如果我们将i声明成int或者Number将可以顺利完成任务.这个主要是因为我们声明的i为uint,它的有效的范围为0~429

ASP.NET 2.0中的ClientScriptManager类用法—如何添加客户端事件

在ASP.NET2.0中,ClientScriptManager 类通过键 String 和 Type 唯一地标识脚本.具有相同的键和类型的脚本被视为重复脚本.因此,我们可以使用脚本类型来避免混淆可能用在页中的来自不同用户控件的相似脚本. <html> <head> <title>ClientScriptManager Example</title> </head> <body> <form id="Form1&quo

ejb方法调用-EJB3.0中怎么一个类调用另外一个类的方法

问题描述 EJB3.0中怎么一个类调用另外一个类的方法 我做得的是struts+ejb3.0,在EJB中我想用BIZ调用dao,是直接New还是有别的方法...求大神指教..... 这是BIZ的方法 public List queryPet(String pelName,String pelZr,String pelType ,String px) { System.out.println("aaaaaaaaaaaaaaaaaaaa"); IDao dao=new IDaoImpl()

cas-CAS4.0 中UsernamePasswordCredentialsToPrincipalResolver这个类没有了

问题描述 CAS4.0 中UsernamePasswordCredentialsToPrincipalResolver这个类没有了 现在如果要返回更多用户信息怎么配置用户认证凭据转化的解析器原来是这样的 enter code here ` ` 解决方案 有principalresolver这个类,可以重写getperson这个方法来返回