Ошибка при встраивании иконок в узел PopUpMenuButton - PullRequest
0 голосов
/ 18 января 2011

Я пытаюсь создать 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': нераспознанная директива времени компиляции.

Plz может кто-нибудь сказать мне, что я делаю здесь неправильно

Спасибо, Зеешан

Ответы [ 2 ]

1 голос
/ 19 января 2011

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

[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>
0 голосов
/ 19 января 2011

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

...