在PopUpMenuButton节点中嵌入图标时出错

时间:2011-01-18 19:50:23

标签: flex popupmenubutton

我正在尝试创建一个popupmenubutton,其中包含图像和标签作为其节点。但我无法嵌入图标。它给了我和错误(如下所示)。你单独的标签工作正常。

<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>

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

普拉兹有人可以告诉我这里做错了什么。

由于 Zeeshan

2 个答案:

答案 0 :(得分:1)

我通常会为每个需要的Icon创建一个类

[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>

答案 1 :(得分: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>

显然,你没有能力以这种方式嵌入图标图像,但也许你不需要?我不是百分百肯定,但我认为dataProvider是在运行时应用的,这意味着没有办法用这种方法嵌入图标图像。

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

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

相关问题