在平日的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);
时间: 2024-11-09 04:03:20