时间: 2021-07-31 作者:daque
18.contextmenu class和contextmenuitem class
flash毕竟扶助右键菜单了,有了这两个类,用户不妨得心应手的定制本人的flash右键菜单。 对于这个功效,我是垂涎以久,由于这表示着纯flash站不妨经过它举行简单的导航,flash游戏也算是有了最为简单的功效菜单,总之,对如许的好货色,我要多费一点吐沫。
谈天休提,先来看一个例子:
var my_cm = new contextmenu();my_cm.hidebuiltinitems();my_cm.customitems.push( new contextmenuitem("sucy",func_1) );my_cm.customitems.push( new contextmenuitem("alien",func_2) );my_cm.customitems.push( new contextmenuitem("jinni",func_3) );my_cm.customitems.sort();
function func_1() { trace(" called sucy!") }function func_2() { trace(" called alien! ") }function func_3() { trace(" called jinni! ") }
_root.menu = my_cm;
尝试,点击鼠标右键,你看到了什么?嘿嘿,点击alien,jinni或sucy就不妨挪用func_1,func_2和func_3。
本来,增添右键菜单的办法格外大略: 1.创造contextmenu菜单东西。 2.创造contextmenuitem菜单项东西,并增添到contextmenu东西中。 3.为每个菜单项定制处置因变量。 4.运用菜单东西到mc,button或textfield。 本领为:moiveclip/button/textfield instancename.menu=contextmenu instacename; 比方,my_btn.menu=my_cm;
再回顾看看这个例子的代码,对于右键菜单的中心局部的你仍旧领会得差不离了,她们是: a)new contextmenu(); 创造一个contextmenu东西。 大略的说,它是一个容器,用来艳服用户设置的菜单项。 除去像本例中的办法大略的创造外,还不妨在创造的同声减少一个事变,这个事变将在用户点击右键展示菜单的功夫爆发。 例:
var my_cm = new contextmenu(rightclick); function rightclick() {(" right clicked! ")} _root.menu = my_cm;
点击鼠标右键,输入" right clicked! "; 本来到了这,你仍旧领会怎样来运用右键事变了,可惜的是,不管怎样,菜单都是会弹出来,以是即使你想运用与菜单无干的右键功效,仍旧会特殊的不爽。 :(
b)contextmenu.hidebuiltinitems(); contextmenu东西的本领。 功效从名字就不妨看出来了,湮没内建菜单项,比方copy,zoom in之类,固然,settings和版权消息是不会湮没的。 其余,你要还要提防的是,自设置的菜单项不许起诸如copy,zoom in等名字,要不她们不会起效率。
c)contextmenu.cutstomitems contextmenu东西的属性。 它是一个数组,保存着一切的用户设置的菜单项,由于菜单项自己是东西,以是这个数组的每一个元素都是东西。 更妙的是,你不妨用数组的操纵本领来操纵他,这对你来说确定不生疏。 你不妨用push()本领来项菜单中增添菜单项,并用cutstomitems[i]的办法考察它。 而其余数组的本领你也不妨善加运用: 比方像本例中的办法,你可大肆地增添菜单项,而后对cutstomitems运用sort()本领。 结果展示的菜单即是按假名序陈设的。 其余,你也不妨经过数组操纵动静的变换菜单项的实质。
d)new contextmenuitem(caption,func) 创造一个contextmenuitem东西。 caption: 菜单项的称呼(提防方才提到过的,不要和内建菜单同名)。 caption也是contextmenuitem的属性,含意沟通。 func: 菜单项被点击后对应的处置因变量的称呼。 其余几个contextmenuitem东西的属性也不妨在创造东西的功夫动作参数传播。 (1)enabled: 菜单项能否可用。(不行用为灰色)默许为true。 (2)separatorbefore:菜单项底下能否会展示分割线(用来菜单分门别类)。默许为false。 (3)visible: 菜单项能否看来。默许为true。 完备的结构因变量为:new contextmenuitem(caption,func,separatorbefore,enabled,visible); 例:
my_mc = new contextmenuitem("item",func_item,true,false,true);
该本领创造了一个名为item的菜单项,在它底下将展示菜单分割线,该名目看来,但居于不行用状况,处置因变量为func_item()。
对于创造一个右键菜单最基础的货色你仍旧控制了,底下来看少许特殊的货色。 e)contextmenuitem.copy() contextmenuitem东西的本领。 归来一个菜单项东西的正片,归来值仍为contextmenuitem东西。
f)contextmenuitem.onselect contextmenuitem东西的事变。 当菜单项被选中时爆发。该事变的处置因变量本质上即是创造东西时的func。 然而即使在创造东西后,对onselect事变拟订新的处置因变量,则func不会奏效。
g)contextmenu.copy() contextmenu东西的本领,归来一个contextmenu东西的正片。归来值仍是contextmenu东西。
h)contextmenu.onselect contextmenu东西的事变。 在用户挪用菜单,且菜单展示之前爆发。它不妨让你按照鼠标所处场所来动静的创造菜单。 该事变的处置因变量不妨有两个参数: my_cm.onselect = function (item:object, item_menu:contextmenu) item: 当用户点击鼠标时,坐落鼠标南针下方的东西范例,不妨是movieclip,按钮,文本域。 这让你不妨实行一致于操纵体例的右键菜单的功效,即在各别的对像上头点击右键会展示各别的菜单。 你不妨用instanceof来决定鼠标南针所指的东西的典型。
item_menu:暂时菜单对应的菜单项东西。 例:(这是扶助中的例子)
my_cm = new contextmenu();menuhandler = function (obj:object, menu:contextmenu) {if(obj instanceof movieclip) {trace("movie clip: " + obj);}if(obj instanceof textfield) {trace("text field: " + obj);}if(obj instanceof button) {trace("button: " + obj);}}my_cm.onselect = menuhandler;
_root.menu = my_cm;
你不妨在场景中创造几个mc,button和textfield,并在那些场所点击鼠标右键,看看有什么各别。
g)contextmenu.builtinitems contextmenu东西的属性。 它自己是一个东西,包括了以次几个布尔典型的属性,辨别对应flash player的内建菜单项: save, zoom, quality, play, loop, rewind, forward_back, print。 树立相映的属性为false会将其从菜单项中移除。 例:
my_cm = new contextmenu(); my_cm.bulidinitems.zoom = false; _root.menu = my_cm;
尝试,点击右键后,菜单中将不会展示zoom in/zoom out 选项。 即使想樊篱一切的内建菜单项,请用contextmenu.hidebuiltinitems()。