2014-12-06 62 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)" >