在以下代码中,一个类被赋予公共 Class 属性 circleClass
,同时可以将该 Class 属性作为主 Library 类的一个属性加以引用:
package { import flash.display.Sprite; public class Library extends Sprite { public var circleClass:Class = Circle; public function Library() { } } } import flash.display.Shape; class Circle extends Shape { public function Circle(color:uint = 0xFFCC00, radius:Number = 10) { graphics.beginFill(color); graphics.drawCircle(radius, radius, radius); } }
另一个 SWF 文件可以加载生成的 Library.swf 文件,然后实例化 Circle 类型的对象。 下面的示例演示一种可以访问子 SWF 文件资源的方法。 (其它技术包括使用 flash.utils.getDefnitionByName()
或导入子 SWF 文件的存根定义。)
package { import flash.display.Sprite; import flash.display.Shape; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; public class LibaryLoader extends Sprite { public function LibaryLoader() { var ldr:Loader = new Loader(); var urlReq:URLRequest = new URLRequest("Library.swf"); ldr.load(urlReq); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); } private function loaded(event:Event):void { var library:Object = event.target.content; var circle:Shape = new library.circleClass(); addChild(circle); } } }
以上文字出自官方文档, 由此我们可以实现一些动态链接库的功能。
应用场景:我们要提供给客户的是一个swc类库,现在需要给这个swc打补丁。
我们可以把部分代码封装到一个swf文件中, 如果我们要更新客户端,只需覆盖swf文件 就可以了,不需要重新编译swc类库。