0

我正在尝试创建一个以图像和标签作为其节点的弹出菜单按钮。但我无法嵌入图标。它给了我和错误(如下所示)。你的标签工作正常。

<mx:PopUpMenuButton id="menu_file" labelField="@label" itemClick="{menuClickHandler(event);}" visible="false"
        height="20" left="0" top="0" width="15" alpha="0.5" cornerRadius="5" useHandCursor="true"
        toolTip="Delete, Move, Rename or Modify other properties">
        <mx:dataProvider>
            <mx:XMLList>
                <node label="{LABEL_DELETE}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
                <node label="{LABEL_DOWNLOAD}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
                <node label="{LABEL_MOVE}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
                <node label="{LABEL_RENAME}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
                <node label="{LABEL_SET_PRIVACY}" icon="@Embed(source='assets/FileManager/images/cancel2.png')"/>
            </mx:XMLList>
        </mx:dataProvider>

这给了我一个错误:“嵌入”的初始化程序:无法识别的编译时指令。

请有人告诉我我在这里做错了什么。

谢谢泽山

4

2 回答 2

1

我通常为我需要的每个图标创建一个类

[Embed("img/Print.png")]
public const printIcon : Class;

而不是使用这个类作为图标

         <mx:XMLList>
            <menuitem label="File">
                <menuitem label="Print" icon="printIcon"/>
                <menuitem label="Logout" icon="logoutIcon" />
                <menuitem label="Close" icon="closeIcon"/>
            </menuitem>
            <menuitem label="Modify">
                <menuitem label="Preferences" icon="toolIcon" />
            </menuitem>
            <menuitem label="Help">
                <menuitem label="About Us" icon="infoIcon"/>
            </menuitem>
        </mx:XMLList>
于 2011-01-19T14:48:28.690 回答
0

我认为问题在于编写的代码试图将图像作为icon属性的值嵌入到节点中——属性的值只能是字符串。

在不了解您的应用程序的任何其他信息的情况下,我会说您必须像这样重写您的 dataProvider:

<mx:dataProvider>
        <mx:XMLList>
            <node label="{LABEL_DELETE}" icon="assets/FileManager/images/cancel2.png"/>
            <node label="{LABEL_DOWNLOAD}" icon="assets/FileManager/images/cancel2.png"/>
            <node label="{LABEL_MOVE}" icon="assets/FileManager/images/cancel2.png"/>
            <node label="{LABEL_RENAME}" icon="assets/FileManager/images/cancel2.png"/>
            <node label="{LABEL_SET_PRIVACY}" icon="assets/FileManager/images/cancel2.png"/>
        </mx:XMLList>
    </mx:dataProvider>

显然,您无法以这种方式嵌入图标图像,但也许您不需要?我不是 100% 确定,但我认为 dataProvider 是在运行时应用的,这意味着无法使用这种方法嵌入图标图像。

如果我错了,您可以编写一个项目渲染器,它会查看icon属性的值并嵌入在该路径中找到的图像。

如果我是对的,您可以编写一个嵌入所有图标图像的自定义项目渲染器,然后根据 的值label或其他标识属性显示正确的图标。

于 2011-01-18T22:19:09.600 回答