AS 中嵌入外部资源

虽然在有些情况下,在运行时使用 flash.display.Loader 类 读取资源很合适,但是在有些情况下有一些外部图形只想加载到 SWF 自里面。这时,如果使用 Flash IDE,可以简单地导入这个对象到库中并设置为“为 ActionScript 导出”。但在使用 Flex uilder 2 或 Flex 2 SDK 命令编译器时,没有库,那么如何在 SWF 中加载外部资源呢?
    答案是使用[Embed]元数据(metadata)标签嵌入资源,元数据标签是指加到ActionScript 文件中的非正式 ActionScript 语句。另外,它们指示编译器在编译过程中去做某种事情,[Embed]标签告诉编译器在最终的 SWF 文件中加载一个特殊的外部资源,资源可以是位图或外部 SWF 文件。告诉编译器要嵌入的资源所在的 source 路径的属性,如下:
[Embed(source="picture.jpg")]

在元数据语句的后面,直接声明一个 Class 类型的变量,如下:
[
Embed(source="picture.jpg")] 
private var Image:Class; 

现在可以使用这个变量创建一个新的资源实例,如下:
var img:Bitmap = new Image(); 

注意创建的这个对象是 Bitmap 类型的。如果嵌入一个外部 SWF 文件,创建的这个对
象应该是 Sprite 类型的,如下:
[Embed(source="animation.swf")] 
private var Anim:Class; 
var anim:Sprite = new Anim(); 


这里是一个在 SWF 中嵌入外部 JPEG 的例子:
package { 
 import flash.display.Sprite; 
 import flash.display.Bitmap; 
 public class EmbedAsset extends Sprite { 
  [Embed(source="picture.jpg")]; 
  private var Image:Class; 
  public function EmbedAsset() { 
   init(); 
  } 
  private function init():void { 
   var img:Bitmap = new Image(); 
   addChild(img); 
  } 
 } 
} 

如果我们使用 Flash IDE ,只要将对象导入到库中并“为 ActionScript 导出”给出
一个类名就可以了。不需要使用 [Embed] 元数据标签及类变量,事实上,Flash IDE 编译
器甚至不支持 [Embed] 元数据标签。

你可能感兴趣的:(Flex,Flash,ide,actionscript)