as3.0中通过ApplicationDomain类获得被加载swf

as3.0中通过ApplicationDomain类获得被加载swf(转载)

首先先回顾一下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-10-25 06:46:59

as3.0中通过ApplicationDomain类获得被加载swf的相关文章

arcgis python 使用光标和内存中的要素类将数据加载到要素集

使用光标和内存中的要素类将数据加载到要素集 import arcpy arcpy.env.overwriteOutput = True arcpy.ImportToolbox("http://flame7/arcgis/services;BufferByVal", "servertools") # List of coordinates coordinates = [[-117.196717216, 34.046944853], [-117.186226483, 3

AS3.0中用于网络通信的类总结

0条评论  1.Loader Loader 类可用于加载 SWF 文件或图像(JPG.PNG 或 GIF)文件.也只能是这些对象. 网络协议基础:HTTP/RTMP 加载方法原型:Loader.load(request:URLRequest, context:LoaderContext = null):void 2.URLLoader URLLoader 类以文本.二进制数据或 URL 编码变量的形式从 URL 下载数据. 在下载文本文件.XML 或其它用于动态数据驱动应用程序的信息时,它很有用

AS3.0中的三角函数

以下是一些在AS3.0中常用的三角函数.代码如下: trace (Math.tan(45*Math.PI/180));//已知45度角求正切值; trace (Math.atan(1)*180/Math.PI);//已知正切值为1求出角度; trace (Math.sin(30*Math.PI/180));//已知30度角求正弦值; trace (Math.asin(1/2)*180/Math.PI);//已知正弦值0.5求角度; trace (Math.cos(60*Math.PI/180))

在asp.net 2.0中使用SqlBulkCopy类迁移数据

在asp.net 2.0中使用SqlBulkCopy类迁移数据 (转) http://jackyrong.cnblogs.com/archive/2005/08/29/225521.html 我们经常要在一个表中将数据迁移到另一个表,当然,用的方法十分多了.在.net 2.0中,提供了一个sqlbulkcopy类,也可以实现如下的操作,下面简单介绍下.比如一个表如下CREATE TABLE Person3( PersonID int IDENTITY(1,1) PRIMARY KEY, Name

避免在ASP.NET Core 3.0中为启动类注入服务

本篇是如何升级到ASP.NET Core 3.0系列文章的第二篇. Part 1 - 将.NET Standard 2.0类库转换为.NET Core 3.0类库 Part 2 - IHostingEnvironment VS IHostEnvironent - .NET Core 3.0中的废弃类型 Part 3 - 避免在ASP.NET Core 3.0中为启动类注入服务(本篇) Part 4 - 将终端中间件转换为ASP.NET Core 3.0中的端点路由 Part 5 - 将集成测试的

java动态编译类文件并加载到内存中

如果你想在动态编译并加载了class后,能够用hibernate的数据访问接口以面向对象的方式来操作该class类,请参考笔者的这篇博文-(该博文暂未发布) 所谓动态编译,就是在程序运行时产生java类,并编译成class文件. 一.这里介绍两种动态编译java文件的方式. 第一种:使用Runtime执行javac命令 /** * 编译java类 * 使用Runtime执行javac命令 * @param name 类的全限定包名 不带后缀 例如com.test.Notice 而不要写成com.

[ActionScript 3.0] 如何控制加载swf动画的播放与暂停

此方法适用于用as 1.0或者as2.0以及as3.0编译的swf,因为as1.0和as2.0编译的swf是AVM1Movie类型,因此需要通过类ForcibleLoader.as将其转换为version 9以上的swf,注意,如果加载的swf是3.0代码编译的,且此swf用文档类编译,则文档类必须继承MovieClip,接下来看代码: 首先写一个加载swf的类SwfPlayer.as: 1 package com.views 2 { 3 import com.controls.utils.Fo

[翻译]-Linux上C++类的动态加载

摘要:本文是翻译文章,主要介绍了运行时重载C++类的技术,包括了Linux上的动态加载接口.C++类的动态加载技术点及实现.自动加载技术等.最后给出了两个应用案例及相关的源代码.   关键字:动态加载,C++类,Linux 原文链接:http://porky.linuxjournal.com:8080/LJ/073/3687.html   推荐: (原文)http://www.tldp.org/HOWTO/text/C++-dlopen (翻译)http://hi.baidu.com/clive

Android中使用WebView, WebChromeClient和WebViewClient加载网页 (能够执行js)

Android中使用WebView, WebChromeClient和WebViewClient加载网页 在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android 中提供了其很好的支持,下面是一个例子程序,先帖: 1 2 3 4 <?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com