一般我們管理Flash右鍵選單是為了兩個目的:第一個,編輯右鍵選單,實現我們自己需要的某些功能;第二個,完全遮蔽右鍵選單。前者可以通過AS程式碼來實現,而後者,Flash本身並不支援,需要藉助一些外力實現。下面我分別介紹: 

      一、編輯右鍵選單

      從InteractiveObject類繼承的每個物件,都可以具有唯一的上下文選單,如Button、TextField、Sprite、MovieClip等。需要注意的是:Stage物件是其中一個例外,它並不接受contextMenu屬性,但如果設定stage.showDefaultContextMenu = false,可以刪除其他所有的選單命令(包括預設的和自己定義的)。

      管理右鍵選單首先需要使用ContextMenu類,用於管理選單。如以下程式碼:

var myContextMenu:ContextMenu = new ContextMenu();    //定義選單例項

myContextMenu.hideBuiltInItems();                                  //隱藏預設的選單項

this.contextMenu = myContextMenu;                               //應用選單項

 

      如果我們並不需要隱藏所有的預設選單項,可以使用ContextMenuBuiltInItems類進行控制,該類的作用就是控制預設的右鍵選單選項。比如我們要關閉其他的預設選單,僅保留“列印”,程式碼如下:

var myContextMenu:ContextMenu = new ContextMenu();

myContextMenu.hideBuiltInItems();                      //使用該行程式碼,設定所有預設項的屬性為false

var defaultItems:ContextMenuBuiltInItems = myContextMenu.builtInItems;

defaultItems.print = true;                                   //設定“列印”為true

this.contextMenu = myContextMenu;

 

      最後我們使用ContextMenuItem類編輯自己的選單項。在編輯之前,我先說下,編輯自己的選單項是有一些限制的,比如:

      (1) 自定義選單項不得超過15個,每個標題必須至少包含一個可見字元。

      (2) 標題字元不能超過100個,並且開頭的空白字元會被忽略。

      (3) 與任何內建選單項相同的標題將被忽略。不過比較搞笑的是,內建選單項比如列印,實際是“列印…”,所以如果取名“列印”是可以的。

      程式碼如下:

var myContextMenu:ContextMenu = new ContextMenu();

myContextMenu.hideBuiltInItems();

 

var menuItem1:ContextMenuItem = new ContextMenuItem(“第一個選單項”);

menuItem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, func1);

myContextMenu.customItems.push(menuItem1);

 

var menuItem2:ContextMenuItem = new ContextMenuItem(“第二個選單項”);

menuItem2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, func2);

myContextMenu.customItems.push(menuItem2);

 

this.contextMenu = myContextMenu;

 

function func1(event:ContextMenuEvent) {

      trace(event.target.caption);

}

function func2(event:ContextMenuEvent) {

      trace(event.target.caption);

}

 

      ContextMenuItem類還有一些有用的屬性,如:

      caption:獲取選單項標題名稱

      enabled:選單項是否啟用(未啟用為灰色不可點選狀態)

      separatorBefore:選單項上方是否顯示分隔條

 

      二、完全遮蔽右鍵選單

      完全遮蔽右鍵選單,一般有以下三種方法:

      (1) 採用JS來實現遮蔽滑鼠右鍵的功能

      網上有提供現成的程式碼範例,地址如下:http://www.taoshaw.com/flash/link_add/youjian/youjian.rar

 

      (2) 也是通過JS,利用透明gif+div網頁層在Flash上新增連結的方法來實現的

      程式碼相對簡單些,如下:

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />

<title>Flash徹底遮蔽右鍵</title>

</head>

 

<body>

<table height=121 border=0 align=”center” cellpadding=0 cellspacing=0>

<tr>

<td>

<div style=”position:relative”>

<EMBED style=”position:absolute;z-index:0″ src=”http://www.taoshaw.com/flash/link_add/xiao.swf” quality=high height=196 TYPE=”application/x-shockwave-flash” PLUGINSPAGE=”http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash” wmode=”opaque”>

<a href=”http://www.taoshaw.com” target=”_blank” style=”cursor:pointer”>

<div style=”position:relative;filter:alpha(opacity=0);-moz-opacity:0;left:0;top:0; background:#CDEAF6;;height:196px;z-index:10″>

</div>

</a>

</div>

</td>

</tr>

</table>

</body>

</html>

 

     (3) 利用swfobject模組自帶的右鍵遮蔽功能

      swfobject據說是Google工程師開發的,功能很強大,非常好用。

      格式如下: <flash id=”test” name=”test” src=”RightClick.swf” ;560″ height=”420″ Version=”10.0.0″ param=”{wmode:`opaque`}”  rightclick=”rightClick”/>

      只要把最後一項改成rightclick=”no”,即可實現遮蔽滑鼠右鍵的功能了。