Во Flex, как я могу использовать файл Fxg в качестве атрибута значка MenuBar? - PullRequest
1 голос
/ 04 мая 2011

У меня есть небольшое беспокойство. Я начал пытаться создать элемент управления MenuBar с пользовательскими значками, уже сделанными в формате FXG.

У меня есть 3 файла FXG в "assets.graphics.icons" внутри папки моего проекта:

  1. SRC / активы / графика / значки / MenuIcon.fxg
  2. SRC / активы / графика / значки / ItemAIcon.fxg
  3. SRC / активы / графика / значки / ItemBIcon.fxg

После прочтения следующих двух ссылок и нескольких веб-страниц.

  1. http://blog.flexexamples.com/2010/01/29/displaying-icons-in-an-mx-menu bar-control-in-flex /
  2. http://livedocs.adobe.com/flex/3/html/help.html?content=menucontrols_3 .html

Я получил этот код:

<?xml version="1.0" encoding="utf-8"?>

<!-- src/myMenuBarApplication.mxml -->



<mx:Application name="myMenuBarApplication"
                xmlns:mx="http://www.adobe.com/2006/mxml"
                xmlns:components="assets.graphics.icons.*">

     <mx:MenuBar id="myMenuBar" iconField="@icon" labelField="@label" showRoot="true">
          <fx:XMLList>

               <menuitem label="Menu" icon="">
                    <menuitem label="Item A" icon="">
                         <menuitem label="SubItem A1"/>
                         <menuitem label="SubItem A2"/>
                    </menuitem>
                    <menuitem label="Item B" icon="">
                         <menuitem label="SubItem B1"/>
                         <menuitem label="SubItem B2"/>
                    </menuitem>
               </menuitem>

          </fx:XMLList>
     </mx:MenuBar>


</mx:Application>

Я узнал, что вы можете сделать это с любым файлом изображения, добавив тег со следующим кодом

<mx:Script>
    <![CDATA[
        [Embed("assets/graphics/images/MenuIcon.png")]
        public const MenuIconConst:Class;
    ]]>
</mx:Script>

Добавление имени константы в атрибут icon элемента управления MenuBar следующим образом:

Поэтому я попытался сделать это без удачи:

<mx:Script>
    <![CDATA[
        import assets.graphics.icons.*;
        [Bindable]
        public var MenuIconVar:Class = new MenuIcon() as Class;
        // MenuIcon is one of my FXG files inside assets.graphics.icons
    ]]>
</mx:Script>

Я нашел другую веб-страницу, где нужно создать библиотеку для встраивания Fxg-файлов, а затем использовать их в качестве имен классов или что-то в этом роде, но я не очень хорошо это понял.

Реальность такова, что я пытался поместить любой из компонентов fxg в атрибуты значков MenuBar разными способами, но безуспешно. Я действительно надеюсь, что кто-то уже сделал что-то подобное. Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 04 мая 2011

Это на самом деле проще, чем вы думаете, если вы просто относитесь к нему как к любому старому классу MXML.

Таким образом, "assets / graphics / images / MenuIcon.fxg" станут assets.graphics.images.MenuIcon. Поскольку строка не является классом, вам потребуется использовать связывающее выражение, чтобы назначить класс атрибуту значка.

<menuitem label="Item A" icon="{assets.graphics.images.MenuIcon}">
     <menuitem label="SubItem A1"/>
     <menuitem label="SubItem A2"/>
</menuitem>

Вам также может понадобиться сначала импортировать класс ... Я не могу вспомнить с макушки головы.

...