2003/11/2

ContextMenu class控制右鍵選單

在MX2004中,針對右鍵選單有了特有的CLASS做控制--ContextMenu
所以只支援FLASH PLAYER 7以上

先看範例(取自ActionScript.org)

沒時間自做一個放上來,自己連過去看吧-_-"
在"M"上面按右鍵試試,就會發現有所不同了。

怎麼做的?請再看下去

在MX2k4之前,我們只能用fscommand("showmenu","false")的方式,讓選單變小,但2k4提供了新的語法,對右鍵選單有更多的控制。

這便是用了2k4的新類別 ContextMenu
*此類別僅適用於flash player7以上版本

使用方法



這樣便能達到跟以前fscommand("showmenu","false")類似的效果
*請注意,是類似,仔細觀察會發現有些許不同

也許會很納悶,以前一行的事,為何要寫三行
如果只是要完全隱藏內建選項的話,用舊的方式明顯會比較快速方便,不過若是要更進階的控制,最好就要用新的方法。

而上述的三行:
第一行是必要的,總是要先建出一個ContextMenu類,才能控制吧
第二行就是你可以大改特改的地方了,你可在此加入各種想要的控制。可以只寫一行,也可以是很多行。後面再做詳細介紹
第三行也是必要的,將你建好的新選單,指定給_root,順帶一提,也可以指定給別的mc。有經驗的人該想到了,沒錯,2k4可以給各個mc或root有不同的右鍵選單哦。

大致架構可分為三個,新建(上述第一行),設定(第二行),指定(第三行)
新建跟指定應該不用太多解釋,不懂的人照抄就是了
接下來講設定的部份,如同上述,你可以寫不只一行的程式去改變它。

接下來介紹有那些指令可做設定

newMenu.hideBuiltInItems();
隱藏所有內建選項

newMenu.builtInItems
指定某特定內建選項的顯示/隱藏
如:newMenu.builtInItems.quality=false;//將"品質"選項隱藏
可設的屬性有:save, zoom, quality, play, loop, rewind, forward_back, print
控制方式用true 或false
*令我納悶的是save是那一個選項,找不到…?

ContextMenu.customItems
自訂選項,可以看成一個array,所以用push的方式加入(其他array方法不知是否也適用?)
如:



這部份要參考ContextMenuItem這個class才算完整

ContextMenuItem
也是一個class,可用兩種寫法加入選單


效果是一樣的

**注意,上述中的hey,是一個function的名稱,也就是這個選項按下後要做什麼動作用的,因此要自行加一個名為hey的function,否則將無法看到自訂選項
例如:



ContextMenu.copy()
故名思義,複制一份
例如:


clone_cm = my_cm.copy();
複制出來的,將繼承原始menu的所有屬性

ContextMenu.onSelect
當右鍵選單觸發時…如


我想也可以當做右鍵訊號的取得吧。

ContextMenuItem.caption
取得選擇選項的名稱,如



ContextMenuItem.copy()
複製一份選單選項,如:


ContextMenuItem.enabled
將選項設為enabled/disabled,如:


*disabled跟隱藏的差別在於,disabled是看得到選不到

ContextMenuItem.onSelect
當選項被選到時,用法類似ContextMenu.onSelect

ContextMenuItem.separatorBefore
畫出分隔線,如

結果會是在myItem2的上面畫出一條分隔線

ContextMenuItem.visible
設定選項的顯示/隱藏,以true/false設定,如

補充,可用menu的地方:

Button.menu, MovieClip.menu, TextField.menu

參考文獻:
Flash MX 2004 introduces the ContextMenu class

沒有留言: