在ActionScript Project中嵌入资源

Flash中使用外部资源是很方便的,可以用从外部加载或者导入进来,再拖拉到舞台或直接用程序控制。然而在Flash中写代码是很痛苦的,很多开发者喜欢用Flex Builder、FDT等IDE来方便编码。但这些IDE不像Flash那样有可视的舞台,只能通过编程来使用外部资源。本文以Flex Builder为例讲解。如果你想用Flash之外的IDE开发一些大型RIAs,本文可能对你有所帮助。

从嵌入位图资源说起,看下面代码。

package { 
    import flash.display.Bitmap; 
    import flash.display.SimpleButton; 
    import flash.display.Sprite;     
    public class BitmapAssetDemo extends Sprite { 
        [Embed(source="../assets/Background.png")] 
        public var Background : Class;   
        [Embed(source="../assets/PlayBtn_upSkin.png")] 
        public var Button_upSkin : Class;   
        [Embed(source="../assets/PlayBtn_overSkin.png")] 
        public var Button_overSkin : Class; 
        [Embed(source="../assets/PlayBtn_downSkin.png")] 
        public var Button_downSkin : Class;  
        public function BitmapAssetDemo() { 
            var bg : Bitmap = new Background() as Bitmap; 
            addChild(bg); 
            bg.x = 100; 
            bg.y = 60;   
            var sb : SimpleButton = new SimpleButton();  
            sb.upState = new Button_upSkin(); 
            sb.overState = new Button_overSkin(); 
            sb.downState = new Button_downSkin(); 
            sb.hitTestState = new Button_downSkin(); 
            sb.x = 160; 
            sb.y = 215; 
            addChild(sb);    
        } 
    } 
}

上述代码我们嵌入一张背景图片和三张用作SimpleButton状态的图片。每个Embed元数据标签下紧跟一个Class或String类型的变量,该变量相当于该图片在在Flash库中的链接类名。注意实例变量的类型为Bitmap或其子类BitmapAsset。

不知大家注意到没有,一个SimpleButton就对应了三个类,如果直接使用swf格式的SimpleButton简单很多。下面我们就来谈一谈使用AS3嵌入swf资源。

和嵌入位图资源类似,使用AS3嵌入swf资源时也要使用元数据标签及声明Class或String类型的变量。看下面代码。

package { 
    import flash.display.MovieClip; 
    import flash.display.SimpleButton; 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    public class MovieClipAssetDemo extends Sprite {     
        [Embed(source="../assets/SimpleBtn.swf")] 
        public var SimpleBtn : Class;  
        public function MovieClipAssetDemo() {           
            var simpleBtn : MovieClip = new SimpleBtn() as MovieClip; 
            simpleBtn.x = 160; 
            simpleBtn.y = 215; 
            addChild(simpleBtn); 
            simpleBtn.addEventListener(MouseEvent.CLICK, onClick); 
        } 
        private function onClick(event : MouseEvent) : void { 
            SimpleButton(event.target).x+=5; 
        } 
    } 
}

注意实例simpleBtn是作为MovieClip或其子类MovieClipAsset或MovieClipLoaderAsset来处理的,只有在加载。

使用AS3嵌入声音字体等其它资源跟上面的方法差不多,大家可以参考一下源文件中的SoundAssetDemo.as,点击此处下载。

发表评论