[ActionScript 3.0] 动态链接库

很多时候,我们为了项目和程序结构更加清晰,需要将发布好的swf放到一个固定的地方供主文件引用,这时就会出现发布好的swf所用的as类路径发生改变,为避免这个问题,需要用到动态链接库,以下做一个简单例子;

新建test.fla,作为需要加载的swf文件;新建Test.as,作为test.fla引用的as类,放在com.ysplib包下,新建main.fla作为加载

test.swf的程序主文件。

Test.as类:

 1 package com.ysplib
 2 {
 3     /**
 4       * ...
 5       * @author FrostYen
 6       */
 7     public class Test
 8     {
 9         public function Test()
10         {
11             trace("test");
12         }
13     }
14 }

在test.fla第一帧上写以下代码:

import com.ysplib.Test;

Test;//如果没在FLASH里出现过,编译的时候不会被编译进SWF中.

把发布好的包含Test.as类的test.swf放到lib文件夹下,然后在main.fla第一帧上写以下代码:

import flash.net.*;

import flash.events.*;

var ldr:Loader = new Loader  ;

ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);

ldr.load(new URLRequest("lib/test.swf"));

function onComplete(e:Event):void
{

    trace("Complete");

    var ClassReference:Class = ldr.contentLoaderInfo.applicationDomain.getDefinition("com.ysplib.Test") as Class;

    //("com.ysplib::Test") 与("com.ysplib.Test")效果一样

    new ClassReference  ;

}

发布main.fla会发现,已经trace出Test.as类的"test"了。

原文地址:https://www.cnblogs.com/frost-yen/p/4519551.html