2014-12-06 56 views
0

我觉得这个问题很愚蠢,但我花了2个小时试图解决它,没有喜悦。NativeMenu没有出现在Windows上

我只是试图让一些本地菜单显示在Windows上。我编写了我自己的代码,可以在OSX上运行,但是没有菜单出现在窗口中,所以我搜索了一些广告已经测试过的例子,包括this one from Adobe.

没有什么特别的,我在做什么。 NativeWindow系统镶边是标准的,等等。我正在用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

整个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)" >