虽然在有些情况下,在运行时使用 [color=red]flash.display.Loader [/color]类 读取资源很合适,但是在有些情况下有一些外部图形只想加载到 SWF 自里面。这时,如果使用 Flash IDE,可以简单地导入这个对象到库中并设置为“为 ActionScript 导出”。但在使用 Flex uilder 2 或 Flex 2 SDK 命令编译器时,没有库,那么如何在 SWF 中加载外部资源呢?
答案是使用[Embed]元数据(metadata)标签嵌入资源,元数据标签是指加到ActionScript 文件中的非正式 ActionScript 语句。另外,它们指示编译器在编译过程中去做某种事情,[Embed]标签告诉编译器在最终的 SWF 文件中加载一个特殊的外部资源,资源可以是位图或外部 SWF 文件。告诉编译器要嵌入的资源所在的 source 路径的属性,如下:
在元数据语句的后面,直接声明一个 Class 类型的变量,如下:
[
现在可以使用这个变量创建一个新的资源实例,如下:
注意创建的这个对象是 Bitmap 类型的。如果嵌入一个外部 SWF 文件,创建的这个对
象应该是 Sprite 类型的,如下:
[color=green]这里是一个在 SWF 中嵌入外部 JPEG 的例子: [/color]
如果我们使用 Flash IDE ,只要将对象导入到库中并“为 ActionScript 导出”给出
一个类名就可以了。不需要使用 [Embed] 元数据标签及类变量,事实上,Flash IDE 编译
器甚至不支持 [Embed] 元数据标签。
答案是使用[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();
[color=green]这里是一个在 SWF 中嵌入外部 JPEG 的例子: [/color]
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] 元数据标签。