Flex embed XML and Icon

在平日的FLEX开发中,我们经常会遇到各种XML和Icon 内嵌,如何方便快速的管理这些文件成为提高开发效率的要点。

最近在做flex右键菜单时遇到的麻烦,下面将近期的经验总结在此,备忘。

 

首先是XML 的内嵌(此处的mimeType只能指定为二进制)

[Embed(source="/assets/xml/contextmenu.xml",mimeType="application/octet-stream")]
private var MenuConfig:Class;
//读取
var bytes:ByteArray = new MenuConfig;
var menuConfig:XML = new XML(bytes.readUTFBytes(bytes.length));

还有一种是在mxml中加入,然后通过id引用

<fx:XML id="menuConfig" source="/assets/xml/contextmenu.xml"/>

 

下面是icon的嵌入

将需要嵌入的图标统一写在一个AS文件中,然后在主应用中加载as文件

Icons.as (注意:作用域一定要写为public,且不要加static,不要加package和class类声明,编译会报错)

[Embed("/assets/images/arcgis16/add.png")]
public var AddIcon:Class;
[Embed("/assets/images/arcgis16/FolderBlueAdd.png")]
public var AddGroupIcon:Class;
[Embed("/assets/images/arcgis16/addressAdd.png")]
public var AddAddressIcon:Class;
[Embed("/assets/images/arcgis16/sketch.png")]
public var SketchIcon:Class;
[Embed("/assets/images/arcgis16/properties.png")]
public var PropertiesIcon:Class;
[Embed("/assets/images/arcgis16/delete.png")]
public var DeleteIcon:Class;

之后在应用中引入

<fx:Script source="/assets/script/Icons.as"/>

此方法适用于Menu,MenuBar等控件的数据源配置,因为通常她们的数据源都是XML,并可配置icon属性,相当方便。

var rightClickMenu:Menu = Menu.createMenu(FlexGlobals.topLevelApplication as DisplayObjectContainer, menuConfig, false);
rightClickMenu.labelField = "@label";
//iconField一定要指定,否则图标不会生效
rightClickMenu.iconField = "@icon";
//将菜单排列紧密
rightClickMenu.variableRowHeight = true;
rightClickMenu.addEventListener(MenuEvent.ITEM_CLICK, handler);

 

你可能感兴趣的:(xml,Flex)