我觉得这个问题很愚蠢,但我已经花了2个多小时试图解决它而没有任何快乐。
我只是想在Windows上显示一些原生菜单。我编写了自己的代码并且可以在OSX上运行,但是窗口上没有菜单,所以我搜索了一些示例,广告已经测试了六个,包括this one from Adobe.
我正在做的事没有什么特别之处。 NativeWindow系统chrome是标准的,等等。我正在使用Windows 7运行VMWare的OSX上测试它 - 但大多数事情似乎都能正常工作。我在跟踪声明中指出菜单是在Windows上创建的。
有人知道什么可能阻止在Flex WindowAplication中在Windows上创建菜单吗?
private function initMenu():void
{
if( NativeWindow.supportsMenu){
stage.nativeWindow.menu = createAppMenu();
} else if( NativeApplication.supportsMenu ){
NativeApplication.nativeApplication.menu = createAppMenu();
}
}
private function createAppMenu():NativeMenu
{
var myMenu:NativeMenu = new NativeMenu();
var nameMenu:NativeMenuItem = myMenu.addItem( new NativeMenuItem( "Window World" ) );
var aboutMenu:NativeMenu = new NativeMenu();
var aboutMenuItem:NativeMenuItem = aboutMenu.addItem( new NativeMenuItem( "About" ) );
nameMenu.submenu = aboutMenu;
var fileMenu:NativeMenuItem = myMenu.addItem( new NativeMenuItem( "File" ) );
fileMenu.submenu = buildFileMenu();
return myMenu;
}
private function buildFileMenu():NativeMenu
{
var fileMenu:NativeMenu = new NativeMenu();
var closeAppMenu:NativeMenuItem = fileMenu.addItem( new NativeMenuItem( "Exit" ));
closeAppMenu.addEventListener( Event.SELECT , closeApp );
return fileMenu;
}
答案 0 :(得分:0)
整个Flex的事情可能很烦人......
菜单未显示的原因是因为我正在使用creationComplete
事件。切换到windowComplete
是正确的事件。
<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"
width="1024" height="768"
showStatusBar="false"
windowComplete="initMenu(this)" >