flash cs6类加载和应用程序域有什么作用?

Flash CS6中的类加载和应用程序域主要作用于Flash应用程序的模块化开发和优化。类加载可以让我们在使用当前应用程序的同时,动态的添加或移除一些可选的模块。应用程序域则可以控制不同类之间的相互访问。

类加载

加载外部类库

动态加载外部AS文件,并将其中一个类创建为对象。可以使用Loader来完成这个任务,代码如下:

//获取外部AS文件的文件位置
var url:URLRequest = new URLRequest("example.swf");

//创建Loader实例,加载外部AS文件
var loader:Loader = new Loader();
loader.load(url);

//监听加载完成事件
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

function onComplete(e:Event):void {
    //从loader中获取加载完成的外部swf文件
    var swf:DisplayObject = loader.content;

    //从swf文件中获取我们要用的类(MyClass),并创建对象
    var MyClass:Class = swf.loaderInfo.applicationDomain.getDefinition("MyClass") as Class;
    var m:MyClass = new MyClass();
}

动态类定义

在应用程序运行时创建和定义AS3类。这个功能在一些需要动态扩展和定制的应用程序中非常有用。可以使用 ApplicationDomaingetDefinitionByName函数来实现这个特性:

//创建ApplicationDomain实例
var ad:ApplicationDomain = new ApplicationDomain();

//动态定义类
var ClassDefinition:Class = defineClass("MyNewClass", Object);
var c:Object = new ClassDefinition();

//将这个新定义的类添加到应用程序域中
ad.definitionByName("MyNewClass");

应用程序域

应用程序域定义了AS3类定义的可访问范围。当我们将多个swf或AS文件合并成一个完整的应用程序时,需要合理地控制应用程序域。

定义新的应用程序域

我们可以通过创建新的应用程序域来隔离不同的AS3定义。新的应用程序域可以单独控制加载、卸载以及运行。 代码如下:

var newApplicationDomain:ApplicationDomain = new ApplicationDomain();
var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext(false, newApplicationDomain);
loader.load(new URLRequest("example.swf"), loaderContext);

共享应用程序域

当我们想要跨多个SWF文件或模块使用相同的库或文件时,可以使用共享应用程序域。共享应用程序域可用于在许多SWF文件之间共享类定义。举个例子,假设我们定义了一个MyClass类,并将其加入了共享应用程序域:

var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
loader.load(new URLRequest("example.swf"), loaderContext);

然后,在其他的SWF文件中,我们可以通过以下方式在共享的应用程序域中获得这个类的引用:

var MyClass:Class = ApplicationDomain.currentDomain.getDefinition("MyClass") as Class;
var myClassInstance:* = new MyClass();

总的来说,通过控制类的加载和应用程序域,我们可以更加灵活地管理和优化Flash应用程序的开发和运行。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flash cs6类加载和应用程序域有什么作用? - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 浅谈go build后加文件和目录的区别

    浅谈go build后加文件和目录的区别 在Go语言中,使用go build命令可以将Go源代码编译成可执行文件。在使用go build命令时,可以指定要编译的文件或目录。下面将详细讲解go build后加文件和目录的区别。 编译单个文件 当使用go build命令后加文件名时,表示只编译指定的单个文件。例如: go build main.go 上述命令将只…

    other 2023年10月13日
    00
  • Win11系统文件名或扩展名太长的四种解决方法

    下面是详细讲解“Win11系统文件名或扩展名太长的四种解决方法”的完整攻略: 一、问题描述 在 Win11 系统中,有一些文件名或扩展名比较长,在复制、移动或打开时可能会出现“文件名太长”的提示,导致无法正常操作文件。这个问题在日常使用中非常常见,那么应该如何解决呢? 二、解决方法 Win11 系统文件名或扩展名太长的问题,一般有以下几种解决方法: 1. 修…

    other 2023年6月26日
    00
  • iOS16如何自定义Home应用程序 iOS16自定义Home应用程序方法

    iOS16如何自定义Home应用程序 在iOS 14及之前的版本中,我们只能通过在App库中搜索要添加的应用程序并将其放置在主屏幕上,但在iOS 15及之后的版本中,我们可以使用自定义应用库和自定义主屏幕来实现自定义排序和分类应用程序。本文将介绍如何使用iOS 16来自定义Home应用程序。 步骤1. 创建自定义应用程序 您可以在iOS 16的应用程序库中创…

    other 2023年6月25日
    00
  • HDD+HDD(SSD)多硬盘系统启动问题和解决方法

    HDD+HDD(SSD)多硬盘系统启动问题 在多硬盘系统中,系统启动时可能会出现问题。以HDD+HDD(SSD)为例,可能会出现以下问题: 系统不能够从正确的硬盘启动。 在BIOS中,我们设置的启动顺序可能不正确,或者硬盘的接口顺序不正确。 引导管理器不能够正确管理系统启动。 在多硬盘系统中,可能会存在多个引导管理器,它们的设置可能会相互干扰,导致系统无法启…

    other 2023年6月27日
    00
  • qq撤回消息并抱了你一下怎么弄 qq撤回消息后特别后缀设置教程

    QQ撤回消息并抱了你一下的完整攻略 1. 设置QQ撤回消息特殊后缀 首先,我们需要设置QQ撤回消息的特殊后缀,以便在撤回消息后进行一些特殊操作,比如抱抱你一下。请按照以下步骤进行设置: 打开QQ应用并登录你的账号。 点击右上角的设置按钮,进入设置界面。 在设置界面中,找到消息设置选项,并点击进入。 在消息设置中,找到撤回消息设置,并点击进入。 在撤回消息设置…

    other 2023年8月5日
    00
  • 什么是汇编语言

    汇编语言是一种底层计算机语言,它使用助记符号(也称为指令码)来操作计算机的硬件资源。使用汇编语言编写的程序可以直接访问硬件资源,因此它比高级语言更加灵活和高效。下面是关于汇编语言的完整攻略。 汇编语言的发展历史 汇编语言最早出现在20世纪50年代,它是为了方便程序员编写机器语言程序而发明的。在20世纪60年代和70年代,随着计算机性能的提高,汇编语言成为了程…

    other 2023年6月26日
    00
  • 深入JS函数中默认参数的使用详解

    当然!下面是关于\”深入JS函数中默认参数的使用详解\”的完整攻略,包含两个示例说明。 深入JS函数中默认参数的使用详解 在JavaScript中,函数的默认参数允许我们为函数的参数提供默认值。下面是关于默认参数的使用方法和注意事项: 基本用法 在函数定义时,可以为参数指定默认值。如果调用函数时没有提供对应的参数值,将使用默认值。 示例代码: functio…

    other 2023年8月20日
    00
  • C++实现中缀表达式转后缀表达式

    C++实现中缀表达式转后缀表达式攻略 中缀表达式是我们通常使用的数学表达式,例如2 + 3 * 4。而后缀表达式(也称为逆波兰表达式)是一种将操作符放在操作数之后的表达式,例如2 3 4 * +。在C++中,我们可以使用栈(stack)数据结构来实现中缀表达式转后缀表达式的算法。 以下是实现中缀表达式转后缀表达式的完整攻略: 步骤1:创建一个空栈和一个空字符…

    other 2023年8月5日
    00
合作推广
合作推广
分享本页
返回顶部