在flex和flashIDE中我们可以[Embed(source="...")]嵌入图片和swf等资源,但两者之间的嵌入方式又有所区别。
flex示例:
[Embed(source="../assets/images/embed/bg_top_v.png")]
public var bg_top_v:Class;
flash示例:
[Embed(source="/../assets/images/embed/bg_top_v.png")]
public var bg_top_v:Class;
"../" 表示从发布目录的上级目录开始查找,如果资源在发布目录的同级目录则不需要此字符串。
注意二者的区别,另外在flash IDE中还必须要设置flex SDK才能用,因为[Embed(source="...")]方法本身属于Flex SDK的功能。
另外附上嵌入其他类型数据的方法:
嵌入XML:
[Embed(source = "/../assets/app/weather/config/city.xml", mimeType = "application/octet-stream")]
public var xml:Class;
当嵌入XML数据时,你必须将mimeType参数设置为"application/octet-stream"。 Flash不能通过XML文件的扩展名检测正确的MIME类型,所以无论什么时候你嵌入XML数据时都要设置mimeType参数。
嵌入字体:
[Embed(source="Arial Bold.ttf", fontName="myFont", fontWeight="bold", advancedAntiAliasing="true", mimeType="application/x-font")]
public var font:Class;
当嵌入字体数据时,Source: 这个参数指出了font文件的位置。如果愿意,你可以使用systemFont参数确认名称而不是source来嵌入系统字体。 fontName: 这个参数指明了嵌入字体的名称,字体的名称是一个唯一标识,所以你可以通过名称来调用字体。 mimeType: 这个参数描述了嵌入元数据的MIME类型。因为你在这个例子中嵌入了一种字体,你可以设置MIME类型为"application/x-font"。 fontWeight: 这个参数表明了字体的粗细,如粗体或者正常。
注意:如果字体有粗细,并且你没有在[Embed]元数据标签中包含fontWeight参数,当测试SWF文件是,你会看到如下编译错误:
Exception during transcoding: Font for alias 'myFont' with plain weight and style was not found at... (意外的转换:带有粗细和样式的别名为'myFont'的字体没有被找到在...)
嵌入swf:
[Embed(source = "/../assets/app/weather/images/embed/test.swf")]
public var swf:Class;
嵌入元件:
[Embed(source = "/../assets/app/weather/images/embed/test.swf",symbol="com.symbol.UpButton")]
public var symbol:Class;
如果没有symbol参数,那么source参数指定将被嵌入的SWF文件的名称和路径。如果存在symbol参数,那么symbol指定source参数关联的SWF文件中元件的名称,并嵌入这个元件,而非这个SWF,symbol参数必须是SWF中链接的类名。