Flex:如何在扩展 WindowedApplication class 的 AS3 class 中制作本机菜单
Flex: how to make a native menu in a AS3 class which extends the WindowedApplication class
我们都知道如何在 MXML 中使用 XML 定义本机菜单。它看起来像这样:
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
<!-- The xml data provider for menu -->
<fx:XML format="e4x" id="menuData">
<root>
<menuitem label="File">
<menuitem label="Open"/>
<menuitem label="Save"/>
</menuitem>
<menuitem label="Help"/>
</root>
</fx:XML>
</fx:Declarations>
<s:menu>
<mx:FlexNativeMenu dataProvider="{menuData}" labelField="@label" showRoot="false"/>
</s:menu>
但我需要在扩展 WindowedApplication class 并由主 M[= 扩展的 class 中使用加载的 XML 制作本机菜单(应用程序菜单) 19=]。我怎样才能做到这一点?提前感谢您的帮助!
下面是菜单的动作脚本示例class。
package com {
import mx.controls.FlexNativeMenu;
import mx.controls.Menu;
import spark.components.WindowedApplication;
public class MyNativeMenu extends WindowedApplication{
public var menuData:XML;
public var flexNativeMenu:FlexNativeMenu;
public var myMenu:Menu;
public function MyNativeMenu() {
menuData = <root>
<menuitem label="File">
<menuitem label="Open"/>
<menuitem label="Save"/>
</menuitem>
<menuitem label="Help"/>
</root>;
flexNativeMenu = new FlexNativeMenu();
flexNativeMenu.dataProvider = menuData;
flexNativeMenu.labelField = "@label";
flexNativeMenu.showRoot = false;
}
override protected function createChildren():void {
this.menu = flexNativeMenu;
}
}
}
主要的 mxml 如下所示
<?xml version="1.0"?>
<com:MyNativeMenu xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:com="com.*">
<fx:Script><![CDATA[
]]></fx:Script>
</com:MyNativeMenu>
我们都知道如何在 MXML 中使用 XML 定义本机菜单。它看起来像这样:
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
<!-- The xml data provider for menu -->
<fx:XML format="e4x" id="menuData">
<root>
<menuitem label="File">
<menuitem label="Open"/>
<menuitem label="Save"/>
</menuitem>
<menuitem label="Help"/>
</root>
</fx:XML>
</fx:Declarations>
<s:menu>
<mx:FlexNativeMenu dataProvider="{menuData}" labelField="@label" showRoot="false"/>
</s:menu>
但我需要在扩展 WindowedApplication class 并由主 M[= 扩展的 class 中使用加载的 XML 制作本机菜单(应用程序菜单) 19=]。我怎样才能做到这一点?提前感谢您的帮助!
下面是菜单的动作脚本示例class。
package com {
import mx.controls.FlexNativeMenu;
import mx.controls.Menu;
import spark.components.WindowedApplication;
public class MyNativeMenu extends WindowedApplication{
public var menuData:XML;
public var flexNativeMenu:FlexNativeMenu;
public var myMenu:Menu;
public function MyNativeMenu() {
menuData = <root>
<menuitem label="File">
<menuitem label="Open"/>
<menuitem label="Save"/>
</menuitem>
<menuitem label="Help"/>
</root>;
flexNativeMenu = new FlexNativeMenu();
flexNativeMenu.dataProvider = menuData;
flexNativeMenu.labelField = "@label";
flexNativeMenu.showRoot = false;
}
override protected function createChildren():void {
this.menu = flexNativeMenu;
}
}
}
主要的 mxml 如下所示
<?xml version="1.0"?>
<com:MyNativeMenu xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:com="com.*">
<fx:Script><![CDATA[
]]></fx:Script>
</com:MyNativeMenu>