我目前将嵌入式图像存储在 flex 库项目 (swc) 中,如下所示:
public class BitmapAssets
{
[Embed(source="/assets/icon_160.png")]
public static const icon_160:Class;
[Embed(source="/assets/icon_240.png")]
public static const icon_240:Class;
[Embed(source="/assets/icon_240.png")]
public static const icon_240:Class;
}
然后我参考其他项目中的图像。例如:
<s:Button>
<s:icon>
<s:MultiDPIBitmapSource source160dpi="{BitmapAssets.icon160}"
source240dpi="{BitmapAssets.icon240}"
source320dpi="{BitmapAssets.icon320}" />
</s:icon>
</s:Button>
我想做的是将 MultiDPIBitmapSource 嵌入到库项目中;然后我可以将代码简化为:
<s:Button icon="{MultiDPIBitmapAssets.icon}" />
但是,我不知道如何嵌入一个填充了 source160/240/320 值的 MultiDPIBitmapSource 对象。
感激地收到任何解决方案;)
编辑:
作为“真正”嵌入的替代方案,我想知道 mxml 编译是否可以提供答案。例如,如果我有一个 mxml 声明:
<fx:declarations>
<s:MultiDPIBitmapSource id="icon"
source160dpi="{BitmapAssets.icon160}"
source240dpi="{BitmapAssets.icon240}"
source320dpi="{BitmapAssets.icon320}" />
</fx:declarations>
然后mxml编译器会把它变成:
var icon:MultiDPIBitmapSource = new MultiDPIBitmapSource();
icon.source160dpi = BitmapAssets.icon160;
icon.source240dpi = BitmapAssets.icon240;
icon.source320dpi = BitmapAssets.icon320;
然后我可以根据需要引用它:
<s:Button icon="{MultiDPIBitmapAssets.icon}" />
从技术上讲,它不是嵌入式的。但出于实际目的,它是(至少在我看来)。问题是,我在哪里放置声明标签?我可以在 mxml 中定义一个非可视类吗?