10.7 本地菜單

來源:互聯網
上載者:User

本地菜單

Native Menu API 提供了建立程式,視窗,操作功能表和彈出式菜單的相關類。

AIR 菜單概要 

native menu類運行程式訪問到作業系統的本地菜單特性。NativeMenu對象用於建立應用程式菜單(OSX系統可用),window menus (Windows系統可用), 操作功能表和彈出式菜單。

菜單的類型

 

AIR支援一下類型的菜單:

應用程式菜單

應用程式菜單必須通過Shell類訪問,在Mac OS X,系統上應用程式菜單由作業系統自動提供。應用程式使用這些AIR菜單API添加功能表項目和子功能表到標準菜單上並註冊處理函數,當然你也可以完全替換掉標準菜單。

表單菜單

通過建立NativeMenu對象,然後賦值給NativeWindow.menu屬性來添加表單菜單。Windows作業系統支援表單菜單,但是Mac OS X不可以。

操作功能表

操作功能表被添加到HTMLControl組件的互動對象和文件項目上。最典型的例子就是在HTML元素上使用Webkit API,當然也可以直接在HTMLControl上使用操作功能表。

系統托盤菜單

通過建立NativeMenu對象並賦值給Shell.shell.icon.menu屬性來建立系統托盤菜單。

Flex 菜單

Flex framework提供了一組Flex菜單類。這些Flex菜單類不需要表單繼承系統表單風格即可使用而且還可在MXML格式中聲明。如果你使用Flex Framework,這時就可以用Flex菜單類來代替本地菜單類了。

自訂菜單

本地菜單是在Flash和HTML渲染模型之外由作業系統負責繪製的,當然我們也可以自己繪製自己的非本地菜單,不過遺憾的是目前AIR菜單類還不支援“自繪製”菜單。

菜單結構 

 

一個菜單包含一個或多個功能表項目。一個功能表項目可以是一個命令,一個子功能表,或一個分隔字元,一般情況下,一個功能表項目就是一個命令,如果功能表項目的submenu屬性被賦值為NativeMenu對象則變為子功能表,如果功能表項目建構函式的isSeparator參數為true,則變為分隔字元。

最頂層的功能表項目顯示在功能表列上,其他子功能表添加在應用程式和表單菜單的頂層菜單中(雖然有些作業系統可以直接把功能表項目放在功能表列上,這樣看起來好像很不符合常規)。

下面的表徵圖示範典型的菜單結構。根菜單包含子功能表“File”和“Edit”。"File"菜單包含兩個命令和一個子功能表(用於顯示最近開啟的文檔,它也是一個子功能表,包含三個功能表項目)。"Edit"菜單包含三個命令和一個分隔字元。

 

菜單事件

 

菜單和功能表項目都可以發出displaying 和 select事件:

Displaying: 

在菜單即將被顯示之前,菜單及其子功能表會發出displaying事件通知其註冊的監聽器。Displaying事件給你一個機會來更新菜單內容或功能表項目狀態。例如在"Open Recent"功能表項目的displaying處理函數可以改變反應當前閱讀過的文檔功能表項目。

Event對象的target屬性指向被顯示的菜單,currentTarget 則是被註冊監聽器監聽的對象,既可以是菜單本身,也可以是其功能表項目。

Select:  

當使用者點擊命令項時,該命令項會發出一個select事件給註冊的監聽器,不過子功能表和分隔字元不能被選擇也不會發出select事件。

功能表項目的Select事件會一直往上傳遞到頂層菜單,所以你可以直接在功能表項目上監聽也可以在菜單結構的上層的監聽。當監聽select事件時,需要通過event的target屬性確定是哪個功能表項目觸發了事件,而currentTarget 屬性可以確定當前的菜單對象。

快速鍵

 

快速鍵是菜單上作業系統鍵盤的一部分功能。無論是Mac OS X還是Windows 系統都允許使用者用鍵盤開啟或選擇某個功能表命令項.

用字串的索引指定快捷字元,字串的第一個字母索引值為“0”。這樣如果把“Format”字串的“r“字母作為快捷字元,應設定其索引值mnemonicIndex屬性為2。

var item:NativeMenuItem = new NativeMenuItem("Format"); 

item.mnemonicIndex = 2; 

功能表項目狀態

 

功能表項目有兩個狀態屬性,checked 和enabled:

checked 

設定為true會在功能表項目字元前加上標誌

var item:NativeMenuItem = new NativeMenuItem("Format"); 

item.checked = true; 

 

enabled 

設定功能表項目是否可用

var item:NativeMenuItem = new NativeMenuItem("Format"); 

item.enabled = false; 

 

關聯對象到功能表項目

 

NativeMenuItem 類的data屬性允許與任意類型的對象相關聯。例如"Open Recent"菜單中,你可以賦值一個File對象到功能表項目上:

var file:File = new File("app-storage:/GreatGatsby.pdf"); 

var menuItem:NativeMenuItem = docMenu.addItem(new NativeMenuItem(file.name)); 

menuItem.data = file; 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.