學習筆記 創建Flex右鍵菜單
本文和大家重點討論一下Flex右鍵菜單的用法,FlashPlayer有三種類型的上下文菜單:標準菜單、編輯菜單和錯誤菜單,只有標準菜單和編輯菜單才能使用ContextMenu類進行修改。AIR中只顯示編輯菜單。
Flex右鍵菜單
1.簡述
flash允許用戶通過ContextMenu類的方法和屬性,通過鼠標右鍵添加自定義菜單項(如“放大”和“打印”)的顯示。
FlashPlayer有三種類型的上下文菜單:標準菜單(當您在FlashPlayer中右鍵單擊時出現)、編輯菜單(當您在可選擇或可編輯的文本字段中右鍵單擊時出現)和錯誤菜單(當SWF文件未能加載到FlashPlayer中時出現)。只有標準菜單和編輯菜單才能使用ContextMenu類進行修改。AIR中只顯示編輯菜單。
FlashPlayer中的上下文菜單添加15個自定義項。AIR中對上下文菜單中的項數沒有明確限制。
2.簡單例子
/**控件dg_Users初始化,創建Flex右鍵菜單
*
*/
- privatefunctioncreateMenu_dg_Users():void{
- vardg_Users_contextMenu1:ContextMenu=newContextMenu();//創建右鍵菜單
- dg_Users_contextMenu1.hideBuiltInItems();//隱藏內置菜單
- varrenameMenuItem:ContextMenuItem=newContextMenuItem("刪除");
- dg_Users_contextMenu1.customItems.push(renameMenuItem);
- renameMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,menu_delUserHandler);
- dg_Users.contextMenu=dg_Users_contextMenu1;
- }
//模塊加載完成后初始化控件Flex右鍵菜單
- publicfunctioninit():void
- {
- createMenu_dg_Users();
- }
/**銷毀控件dg_Users的Flex右鍵菜單
*
*/
- privatefunctiondestroyMenu_dg_Users():void{
- vardg_Users_contextMenu1:ContextMenu=dg_Users.contextMenu;
- dg_Users_contextMenu1.removeEventListener(ContextMenuEvent.MENU_SELECT,menu_delUserHandler);
- }
/**控件dg_Users,刪除用戶事件
*
*/
- privatefunctionmenu_delUserHandler(evt:ContextMenuEvent):void{
- vars:StuffModel=dg_Users.selectedItemasStuffModel;
- Alert.show(s.zgh);
- }
<!--顯示部門和用戶信息-->
- <mx:Paneltitlemx:Paneltitle="用戶列表"width="80%"height="100%">
- <mx:DataGrididmx:DataGridid="dg_Users"dataProvider="{usersList}"
- width="100%"height="100%"
- fontWeight="normal"
- horizontalCenter="0"verticalCenter="0"
- >
- <mx:columns>
- <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="部門名稱"dataField="yxsmc"/>
- <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="姓名"dataField="xm"/>
- </mx:columns>
- </mx:DataGrid>
- </mx:Panel>
說明:
1.Flex右鍵菜單的原理為:新建一個ContextMenu類;修改ContextMenu對象的item屬性;將這個對象賦給一個控件。dg_Users.contextMenu=dg_Users_contextMenu1;這句話可以保證新建立的菜單只應用于dg_Users這個控件。所以盡管你創建了多個右鍵菜單,也不用擔心菜單會混亂。
2.待解決的問題
由于我們用到了事件監聽renameMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,menu_delUserHandler);所以最好在這個模塊不用時,將這個監聽給去掉,即調用方法destroyMenu_dg_Users(),但是這個方法何時調用,我查了一些資料,沒有發現相關說明和資料。
如果不去掉這個監聽,如果系統產生了過多的監聽,不知道是否會引發什么問題?
參考文獻:
1.Flex右鍵重命名的例子.http://blog.csdn.net/newskl/archive/2009/09/11/4538798.aspx
2.FLEX在某控件上創建右鍵實例學習.http://www.cnblogs.com/xxcainiao/archive/2008/08/05/1261246.html
【編輯推薦】