博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
as3.0中通过ApplicationDomain类获得被加载swf
阅读量:4169 次
发布时间:2019-05-26

本文共 1886 字,大约阅读时间需要 6 分钟。

首先先回顾一下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);
}
}
}

转载地址:http://hagxi.baihongyu.com/

你可能感兴趣的文章
leetcode 91 Decode Ways
查看>>
leetcode 89 Gray Code
查看>>
leetcode 88 Merge Sorted Array
查看>>
leetcode 87 Scramble String(递归+剪枝)
查看>>
win10系统下“python不是内部或外部命令”的解决方法
查看>>
Python的优缺点
查看>>
python中如何区分常量和变量
查看>>
python导入模块的4种方法
查看>>
linux more命令简单使用
查看>>
vi 编辑器超级简单且实用的命令
查看>>
python多行注释和跨行字符串
查看>>
linux终端输出彩色字体
查看>>
一个程序学会python的流程控制
查看>>
python中sys.exit() os._exit() exit() quit()的简单使用
查看>>
linux rm -f rm -rf 命令:删除文件和文件夹
查看>>
ubuntu-14.04.3下安装VMware Tools(虚拟机与主机之间直接复制粘贴)
查看>>
python编写登录接口
查看>>
python字符串处理常用方法
查看>>
linux echo 向文件中追加信息
查看>>
python列表常见方法
查看>>