學(xué)習(xí)筆記 創(chuàng)建Flex右鍵菜單
本文和大家重點(diǎn)討論一下Flex右鍵菜單的用法,F(xiàn)lashPlayer有三種類(lèi)型的上下文菜單:標(biāo)準(zhǔn)菜單、編輯菜單和錯(cuò)誤菜單,只有標(biāo)準(zhǔn)菜單和編輯菜單才能使用ContextMenu類(lèi)進(jìn)行修改。AIR中只顯示編輯菜單。
Flex右鍵菜單
1.簡(jiǎn)述
flash允許用戶通過(guò)ContextMenu類(lèi)的方法和屬性,通過(guò)鼠標(biāo)右鍵添加自定義菜單項(xiàng)(如“放大”和“打印”)的顯示。
FlashPlayer有三種類(lèi)型的上下文菜單:標(biāo)準(zhǔn)菜單(當(dāng)您在FlashPlayer中右鍵單擊時(shí)出現(xiàn))、編輯菜單(當(dāng)您在可選擇或可編輯的文本字段中右鍵單擊時(shí)出現(xiàn))和錯(cuò)誤菜單(當(dāng)SWF文件未能加載到FlashPlayer中時(shí)出現(xiàn))。只有標(biāo)準(zhǔn)菜單和編輯菜單才能使用ContextMenu類(lèi)進(jìn)行修改。AIR中只顯示編輯菜單。
FlashPlayer中的上下文菜單添加15個(gè)自定義項(xiàng)。AIR中對(duì)上下文菜單中的項(xiàng)數(shù)沒(méi)有明確限制。
2.簡(jiǎn)單例子
/**控件dg_Users初始化,創(chuàng)建Flex右鍵菜單
*
*/
- privatefunctioncreateMenu_dg_Users():void{
- vardg_Users_contextMenu1:ContextMenu=newContextMenu();//創(chuàng)建右鍵菜單
- dg_Users_contextMenu1.hideBuiltInItems();//隱藏內(nèi)置菜單
- 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();
- }
/**銷(xiāo)毀控件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);
- }
<!--顯示部門(mén)和用戶信息-->
- <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="部門(mén)名稱"dataField="yxsmc"/>
- <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="姓名"dataField="xm"/>
- </mx:columns>
- </mx:DataGrid>
- </mx:Panel>
說(shuō)明:
1.Flex右鍵菜單的原理為:新建一個(gè)ContextMenu類(lèi);修改ContextMenu對(duì)象的item屬性;將這個(gè)對(duì)象賦給一個(gè)控件。dg_Users.contextMenu=dg_Users_contextMenu1;這句話可以保證新建立的菜單只應(yīng)用于dg_Users這個(gè)控件。所以盡管你創(chuàng)建了多個(gè)右鍵菜單,也不用擔(dān)心菜單會(huì)混亂。
2.待解決的問(wèn)題
由于我們用到了事件監(jiān)聽(tīng)renameMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,menu_delUserHandler);所以最好在這個(gè)模塊不用時(shí),將這個(gè)監(jiān)聽(tīng)給去掉,即調(diào)用方法destroyMenu_dg_Users(),但是這個(gè)方法何時(shí)調(diào)用,我查了一些資料,沒(méi)有發(fā)現(xiàn)相關(guān)說(shuō)明和資料。
如果不去掉這個(gè)監(jiān)聽(tīng),如果系統(tǒng)產(chǎn)生了過(guò)多的監(jiān)聽(tīng),不知道是否會(huì)引發(fā)什么問(wèn)題?
參考文獻(xiàn):
1.Flex右鍵重命名的例子.http://blog.csdn.net/newskl/archive/2009/09/11/4538798.aspx
2.FLEX在某控件上創(chuàng)建右鍵實(shí)例學(xué)習(xí).http://www.cnblogs.com/xxcainiao/archive/2008/08/05/1261246.html
【編輯推薦】
- Flex客戶端工程路徑規(guī)劃指導(dǎo)
- Flex開(kāi)發(fā)者必須知道的10件事
- 技術(shù)前沿 看Flex客戶端緩存技術(shù)如何使用
- 12個(gè)Flex常用功能代碼再現(xiàn)
- 學(xué)習(xí)筆記 Flex國(guó)際化如何支持其他語(yǔ)言