在ActionScript Project中使用基于SWC的组件

如果你熟悉Flex,那么应该知道SWC文件,Flex Projec可以将其作为嵌入资源,而基于SWC的组件可以在Flex Builder ActionScript Project使用。

SWC文件是类似zip的文件,它是一个由预编译的Flash元件和ActionScript代码组成的包,使用它可避免重新编译不会更改的元件和代码。我们可以用Flash或Flex生成SWC文件,再将其添加到Flex ActionScript工程中,有三种方式:Add SWCAdd SWC ProjectAdd SWC Folder

将SWC文件到library path后,编写下面代码。

package{ 
    import flash.display.SimpleButton; 
    import flash.display.Sprite; 
    import flash.events.MouseEvent;  
    public class ClassDemo extends Sprite { 
        public var Background : Class;   
        public function ClassDemo() {            
            var playBtn : PlayBtn = new PlayBtn(); 
            addChild(playBtn); 
            playBtn.x = 160; 
            playBtn.y = 215;     
            var stopBtn : StopBtn = new StopBtn(); 
            addChild(stopBtn); 
            stopBtn.x = 220; 
            stopBtn.y = 215; 
            stopBtn.upState = null; 
        } 
    } 
}

注意实例simpleBtn是作为MovieClip或其子类(MovieClipAsset/MovieClipLoaderAsset)来处理的,而且没有办法将其作为SimpleButton初始化。

与MovieClipAssetDemo.as相比,本实例少了元数据标签和变量声明,并且在初始化时对象实例不再是作为MovieClip类型来处理,而是作为Flash元件链接的类型来对待的。这都是SWC文件的功劳,在动态编译SWC时,Flex编译器会根据它里面的catalog.xml配置文件生成相应的动态类,因此可以使用AS3直接访问Flash元件链接的类了。你甚至还可以利用RSL技术实现动态链接。另外FDT professional版还可以浏览SWC组件的结构,真的很方便。

注意:如果包含的SWC文件中Flash元件链接的类名相同,哪怕是不在同一包中,都会在运行时出现类混淆不清的错误。

发表评论