在 Flex 中,如何使用 Fxg 文件作为菜单栏图标属性?

Posted

技术标签:

【中文标题】在 Flex 中,如何使用 Fxg 文件作为菜单栏图标属性?【英文标题】:In Flex, How can I use an Fxg file as a MenuBar Icon attribute? 【发布时间】:2011-05-03 20:02:30 【问题描述】:

我有点担心。我开始尝试使用已经以 FXG 格式制作的自定义图标制作 MenuBar 控件。

我的项目文件夹中的“assets.graphics.icons”中有 3 个 FXG 文件:

    src/assets/graphics/icons/MenuIcon.fxg src/assets/graphics/icons/ItemAIcon.fxg src/assets/graphics/icons/ItemBIcon.fxg

看完下面两个链接和一堆网页。

    http://blog.flexexamples.com/2010/01/29/displaying-icons-in-an-mx-menu bar-control-in-flex/ 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>

将常量名称添加到 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】:

实际上比你想象的要容易,如果你只是把它当作任何 ol' 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>

您可能还需要先导入类...我想不起来了。

【讨论】:

以上是关于在 Flex 中,如何使用 Fxg 文件作为菜单栏图标属性?的主要内容,如果未能解决你的问题,请参考以下文章

Flex-mobile开发:定制ActionBar皮肤的FXG背景文件

了解FXG文件

自定义 flex MenuBar 或移除悬停效果

flex中的菜单栏控件,需要处理单个菜单项的单独方法

如何将控制栏添加到标题栏正下方的 Flex Spark 面板组件

如何在ios中同时实现标签栏和侧边菜单?