首先先回顾一下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);
}
}
}
Flash/Flex
sunneon's blog
分享到:
相关推荐
java应用程序类加载器(ClassLoader for java Application),类似exe4j, 方便启动java程序, 配置灵活,支持多平台选择性配置
读懂flash应用程序域的用法,体会安全沙箱机制。
applicationDomain学习资料
深入理解ApplicationDomain和SecurityDomain
ApplicationDomain的误解,安全沙箱有关内容
详细介绍ApplicationDomain和SecurityDomain的原理,想对这方面的知识做深入研究的可以看下
从MATLAB中创建出一个独立的应用程序有多种方法,可以用MATLAB提供的现有函数或者现有App,本文介绍的是利用MATLAB的Application Compiler工具创建一个独立的应用程序。
应用程序调试技术 光盘 John Robbins Debugging Application
欢迎使用Excel和Visual Basic for Application开发应用程序!作为已经能够熟练使用Excell的用户,你一定对Excell强大的功能感到满意。现在,你将逐步提高到更高的水平。即使你以前从来没有编写过程序,也能够使用...
简单好用,采用应用程序域,和主程序运行在同一个进程. <description>update <updateUrl>http://localhost/Tables/</updateUrl> <application ver="1.0.0.0" path="E:\NewAudit\AuditBuilder\AuditBuilder\...
和做事情一样,应用程序也需要有来有去。进来了,给用户提供良好的运用感受,帮用户顺利的解决问题。当然走的时候更需要带走自己遗留的“垃圾”,为再次使用或下一个用户提供干净的安全的系统环境。 如果应用程序走...
ClassLoader 三种类加载方式 Boostrap Extenxsion 以及Application ClassLoad分别适用的场景
application类使用示例,在多个activity中传递数据
C#长用代码 C# 代码 C#长用 C#长用代码 C# 代码 C#长用 C#长用代码 C# 代码 C#长用 C#长用代码 C# 代码 C#长用 C#长用代码 C# 代码 C#长用 C#长用代码 C# 代码 C#长用
\应用程序架构指南Application Architecture Guide 2.0 \应用程序架构指南Application Architecture Guide 2.0 \应用程序架构指南Application Architecture Guide 2.0
第5章 Application(应用程序)对象
ApplicationClass.zipApplication类的创建与应用
Excel应用程序对象_Application对象
Java API (Application Program Interface) 应用程序接口,全面,易懂,中文版。
通过本文,您应该对Spring Boot和ApplicationRunner有了基本的了解,并可以使用它们来开发更复杂和功能强大的Spring Boot应用程序。 尽管本文提供了一个简单的示例,但Spring Boot还有很多其他功能和特性,例如自动...