2014-01-13 34 views
0

對MX的MenuBar沒有顯示的菜單項中的一個。直到幾分鐘前它工作正常。我沒有更改任何代碼。當我點擊它時,我注意到它顯示了一個影子。的MenuBar沒有顯示

<mx:MenuBar id="mainMenuBar" 
       dataProvider="{rootMenu}" 
       labelField="label" 
       height="100%" 
       useHandCursor="true" 
       buttonMode="true" 
       showRoot="false" 
       menuShow="menuItemEventHandler(event)" 
       menuHide="menuItemEventHandler(event)" 
       itemClick="menuItemEventHandler(event)" 
       itemRollOut="menuItemEventHandler(event)" 
       itemRollOver="menuItemEventHandler(event)" 
       change="menuItemEventHandler(event)" 
       > 
    </mx:MenuBar> 

     /** 
     * 
     * */ 
     private function menuItemEventHandler(event:MenuEvent):void { 

      if (event.item is MenuItem) { 
       EventDispatcher(event.item).dispatchEvent(event); 
      } 
      else if (event.menu && event.menu.dataProvider && 
       event.menu.dataProvider[0] is MenuItem && 
       event.menu.dataProvider[0].parent is MenuItem) 
      { 
       EventDispatcher(event.menu.dataProvider[0].parent).dispatchEvent(event); 
      } 
     } 



    <model:MenuItem id="rootMenu"> 
     <model:MenuItem label="Edit" > 
      <model:MenuItem id="undo" label="Undo" /> 
      <model:MenuItem id="redo" label="Redo" /> 
      <model:MenuItem type="separator"/> 
      <model:MenuItem id="cut" label="Cut" enabled="false"/> 
      <model:MenuItem id="copy" label="Copy" enabled="false"/> 
      <model:MenuItem id="paste" label="Paste" name="paste" enabled="false"/> 
      <model:MenuItem id="undo1" label="Undo" /> 
      <model:MenuItem id="redo1" label="Redo" /> 
      <model:MenuItem type="separator"/> 
      <model:MenuItem id="cut1" label="Cut" enabled="false"/> 
      <model:MenuItem id="copy1" label="Copy" enabled="false"/> 
      <model:MenuItem id="paste1" label="Paste" name="paste" enabled="false"/> 
      <model:MenuItem id="undo2" label="Undo" /> 
      <model:MenuItem id="redo2" label="Redo" /> 
      <model:MenuItem type="separator"/> 
      <model:MenuItem id="cut2" label="Cut" enabled="false"/> 
      <model:MenuItem id="copy2" label="Copy" enabled="false"/> 
      <model:MenuItem id="paste2" label="Paste" name="paste" enabled="false"/> 
      <model:MenuItem id="undo3" label="Undo" /> 
      <model:MenuItem id="redo3" label="Redo" /> 
      <model:MenuItem type="separator"/> 
      <model:MenuItem id="cut3" label="Cut" enabled="false"/> 
      <model:MenuItem id="copy3" label="Copy" enabled="false"/> 
      <model:MenuItem id="paste3" label="Paste" name="paste" enabled="false"/> 
     </model:MenuItem> 

回答

0

問題是菜單的高度比應用程序的高度高。所以它顯示,但它不在屏幕上。我猜想邏輯是,如果彈出菜單的任何部分離開屏幕,菜單欄必須位於應用程序的底部,所以彈出菜單應該顯示在菜單欄上方而不是下面。

解決方法是使屏幕更高(我有Firebug可見,所以它不是典型的高度)。我可以檢查彈出的高度,並將其與應用程序的高度進行比較,並手動將彈出的垂直位置設置到正確的位置。我還沒有試圖解決這個問題,因爲用戶可能不會在這麼短的時間內使用這個應用程序。