Ошибка при встраивании иконок в узел 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>

Это дает мне ошибку: инициализатор для 'Embed': нераспознанная директива времени компиляции.

Плз может кто-нибудь сказать мне, что я делаю не так здесь.

Спасибо Zeeshan

2 ответа

Решение

Обычно я создаю класс для каждого нужного мне значка.

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

Я думаю, что проблема заключается в том, что написанный код пытается внедрить изображение в качестве значения 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или какой-либо другой идентификационный атрибут.

Другие вопросы по тегам