【问题标题】:Loading and setting saved value for a Menu in Flex在 Flex 中加载和设置菜单的保存值
【发布时间】:2026-01-07 03:20:09
【问题描述】:

我在 flex 中有一个简单的弹出菜单,一个 mx 菜单,我使用 Menu.initMenu 创建依赖于定义为数据提供者的 XML 列表的菜单。

菜单有复选框项,每次我在包含菜单实例的类中调用 load(values:Array) 函数时,我都想检查相关项。

如何动态加载值并更改菜单的选择?

【问题讨论】:

    标签: apache-flex actionscript menu


    【解决方案1】:

    好的,明白了:

    1. 设置菜单,并给每个菜单项一个标签属性:

      private var subMenuDataMain:XMLList = new XMLList(
          "<menuitem label='Title' icon='' enabled='false'/>" +
          "<menuitem label='' type='separator'/>" +
          "<menuitem label='SHOW_DEMO' type='check' eventName='SHOW_DEMO' />" +
          "<menuitem label='' type='separator'/>");
      
    2. 创建一个辅助函数来打开给定标签的菜单项(如果它是一个 2 级菜单项,还提供 subMenuID,它是第二个项目的标签名称):

          function toggleMenuItem(menuID:String, subMenuID:String, toggle:Boolean):void
          {
              if (subMenuID != "")
                  subMenuDataSets.(@label == menuID).menuitem.(@label == subMenuID).@toggled = toggle;
              else
                  subMenuDataSets.(@label == menuID).@toggled = toggle;
          }
      
    3. 实现一个初始化菜单值的函数:

      public function setMenuOptions(obj:SampleObject):void {
          toggleMenuItem("SHOW_DEMO", "", (obj.demoISShown());
       }
      

    【讨论】: