在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
沒有留言:
張貼留言