运行时共享库的作用是在swf中动态加载外部库,使用库中的资源等等,以下是例子:
1. 新建一fla,命名为Lib.fla
2. 在fla中新建一个元件,库面板中右键选择“链接”,类名设置为MyCircle
3. 新建一as文件,命名为MyCircle.as(空类),代码如下
1 2 3 4 5 | package{ import flash.display.*; public class MyCircle extends Sprite{ } } |
4. Lib.fla的文档类处写LibTest,然后新建一LibTest.as,代码如下
1 2 3 4 5 6 7 8 9 | package{ import flash.display.*; public class LibTest extends Sprite{ public var CircleClass:Class = MyCircle; public function echo(string:String){ trace("echo from lib:" + string); } } } |
5. shift + f12 导出Lib.swf
6. 新建一app.fla,文档类设置为AppTest
7. 新建AppTest.as,代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package{ import flash.display.*; import flash.net.*; import flash.events.*; public class AppTest extends Sprite{ public function AppTest (){ init(); } public function init():void{ var loader:Loader = new Loader(); var req:URLRequest = new URLRequest(); req.url = "Lib.swf"; loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.load(req); } public function completeHandler(event:Event):void{ var loader:Loader = (event.target as LoaderInfo).loader; var lib:LibTest = LibTest(loader.content); trace(lib); lib.echo("xxx"); addChild(new lib.CircleClass()); } } } |
8. 导出运行一下,可以看到Lib.swf被加载以后,AppTest调用lib中的MyCircle类新建了一个圆形加载了舞台上。
这种方法可以用来动态加载字体,或其他比较大但不是必须的资源。
注意这种方法和flash 本身所的runtime sharelib应该是不一样的,flash的这个概念是可以将原件按share lib导出,然后再fla中可以导入swf得到swf中的库元件,这个运行时是指flash开发工具的运行时而不是swf的运行时。
下载本文源代码:sharelib
