收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 1513|回复: 0

[AS3] Library类-可实现动态加载外部的显示元件和类

[复制链接]
发表于 2009-7-29 12:39:41 | 显示全部楼层 |阅读模式
原文地址:http://www.klstudio.com/post/200.html
    这段时间在尝试使用fdt来开发Flash应用,在使用的过程发现如何使用fla文件的显示元件(这些显示元件本身也绑定了类,也有自己的功能)?这个问题也一直让我头疼。最近我参考了网上的一些开源项目再结合我自己的想法,终于解决了这个问题。我现在把这个Library类进行打包。它可以很方便的动态加载外部的显示元件和类,很适合在fdt和flex开发环境中使用,很方便把显示层的元件放到独立的swf里。
Library类(调用接口)
  1. package com.klstudio.swf {
  2.         import flash.events.EventDispatcher;
  3.         import flash.display.DisplayObject;
  4.        
  5.         [Event(name="ioError", type="flash.events.IOErrorEvent")]
  6.        
  7.         [Event(name="complete", type="flash.events.Event")]
  8.        
  9.         public class Library extends EventDispatcher implements ILibrary {
  10.                 function Library(path : String);
  11.                
  12.                 public function getClassOf(linkage : String) : Class;
  13.                
  14.                 public function getFactory() : ILibrary;
  15.                
  16.                 public function getInstanceOf(linkage : String) : DisplayObject;
  17.                
  18.                 public function load(path : String = "") : void;
  19.         }
  20. }
复制代码

LibrarySWF类(调用接口)
  1. package com.klstudio.swf {
  2.         import flash.display.MovieClip;
  3.         import flash.events.EventDispatcher;
  4.         import flash.display.InteractiveObject;
  5.         import flash.display.Sprite;
  6.         import flash.display.DisplayObjectContainer;
  7.         import flash.display.DisplayObject;
  8.        
  9.         public class LibrarySWF extends MovieClip implements ILibrary {
  10.                 public function getClassOf(linkage : String) : Class;
  11.                
  12.                 public function getInstanceOf(linkage : String) : DisplayObject;
  13.         }
  14. }
复制代码

LibrarySWF类是用于绑定到fla文件(库里有显示元件)的文档类上即可
然后就可以直接外部调用了
  1. package com.klstudio.swf.test {
  2.         import flash.display.DisplayObject;
  3.         import flash.display.Sprite;
  4.         import flash.events.IOErrorEvent;
  5.         import flash.events.Event;

  6.         import com.klstudio.swf.Library;       

  7.         /**
  8.          * @link kinglong@gmail.com
  9.          * @author Kinglong
  10.          * @playerversion fp9+
  11.          * @version 0.1
  12.          */
  13.         [SWF(width="200",height="200",frameRate="24",backgroundColor="#CCCCCC")]
  14.         public class TestLibrary extends Sprite {
  15.                 private var lib:Library;               
  16.                 public function TestLibrary(){
  17.                         lib = new Library("buttons.swf");
  18.                         lib.addEventListener(Event.COMPLETE, libHandler);
  19.                         lib.addEventListener(IOErrorEvent.IO_ERROR, libHandler);
  20.                         lib.load();                       
  21.                 }
  22.                
  23.                 private function libHandler(event:Event):void{
  24.                         trace(event);
  25.                         switch(event.type){
  26.                                 case Event.COMPLETE:
  27.                                         var button:DisplayObject = lib.getInstanceOf("PlayButton");
  28.                                         button.x = 10;
  29.                                         button.y = 10;
  30.                                         addChild(button);
  31.                                         break;
  32.                                 case IOErrorEvent.IO_ERROR:
  33.                                         break;
  34.                         }
  35.                 }
  36.         }
  37. }
复制代码

演示效果:http://www.klstudio.com/post/200.html
相关文件打包(包里有swf-klstudio.swc)下载:http://www.klstudio.com/post/200.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( ICP05002321 )  

GMT+8, 2019-8-23 19:22 , Processed in 0.109098 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表