加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

AS3运行时加载外部库,调用swf中的库

发布时间:2020-12-15 17:51:00 所属栏目:百科 来源:网络整理
导读:使用Flash Builder创建ActionScript项目,最苦恼的事情莫过于没有素材了。如果能通过运行时加载的方式提供素材,那么开发起项目来就事半功倍了!下面介绍的,正是这种运行时加载素材的方式。 【例1】 最近在网上看到一篇关于ApplicationDomain类的文章,有兴

使用Flash Builder创建ActionScript项目,最苦恼的事情莫过于没有素材了。如果能通过运行时加载的方式提供素材,那么开发起项目来就事半功倍了!下面介绍的,正是这种运行时加载素材的方式。

【例1】
最近在网上看到一篇关于ApplicationDomain类的文章,有兴趣的朋友不防也去看看,
网址:http://eidiot.net/
参考:http://oliwen.blog.163.com/blog/static/38057532200772891112440/

浅显的研究了一下,发现用这个类竟可以调用加载进来的SWF库文件,嘿嘿,以后做大型的网络开发,这个功能可就能派上大用场了.现将代码公视如下:

var loader : Loader = new Loader();
var context : LoaderContext = new LoaderContext(true,ApplicationDomain.currentDomain);

context.applicationDomain = ApplicationDomain.currentDomain;
//context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
这是我写在针上做的一个测试,m2为加载进来的SWF,Tm为m2库中的链接类名.
loader.load(new URLRequest("m2.swf"),context);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadcom);
function loadcom(the:Event):void
{
var runtimeClassRef:Class = getClass("Tm");
var greeter:MovieClip = new runtimeClassRef();
addChild(greeter);
greeter.x=100;
greeter.y=200;

function getClass(className:String):Class
{
???return loader.contentLoaderInfo.applicationDomain.getDefinition(className) as Class;
}
}


?

【例2】
---------------------LittleSpace 扩展修改------------------------------
SkinOverAllNoCaption.swf 为FLVPlayBack 组件的一个皮肤~
我这里只调用一个舞台上的按钮【"playpause_mc"】,播放暂停按钮,
此按钮的链接名为:fl.video.skin.PlayButtonNormal

舞台第一帧书写 : this.playButtonNormalState = "fl.video.skin.PlayButtonNormal";
Ctrl+Enter发布SkinOverAllNoCaption.swf

然后新建一个fla,在第一帧写入: var request:URLRequest = new URLRequest("SkinOverAllNoCaption.swf"); var loader:Loader = new Loader(); var skinTemplate;//注意这里不能定义类型,否则出错[访问未定义的属性] loader.contentLoaderInfo.addEventListener (Event.COMPLETE,loadComplete); loader.load (request); function loadComplete (event:Event):void { skinTemplate = Sprite(loader.content); trace (skinTemplate ); addChild (skinTemplate ); trace (skinTemplate.pauseButtonOverState); trace (skinTemplate.playpause_mc); //与加载swf交互 skinTemplate.playpause_mc.addEventListener (MouseEvent.CLICK,clickHandler); } function clickHandler (e) { //获得加载的swf中的库的定义 var runtimeClassRef:Class = getClass(skinTemplate.playButtonNormalState); //或者使用这句 // var runtimeClassRef:Class = getClass("fl.video.skin.PlayButtonNormal"); trace (runtimeClassRef is Class); var greeter:MovieClip = new runtimeClassRef(); addChild (greeter); } function getClass (className:String):Class { return loader.contentLoaderInfo.applicationDomain.getDefinition(className) as Class; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读