当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > MX2004--AS2.0 新特性实例教程(六)

Flash动画制作
赤手空拳下载Flash
创建一个Flash站点的十大技巧
用Flash制作Google搜索程序
枫桥夜泊下 遮罩效果的动态文本
Flash MX 2004 ActionScript图文教程(十二)
Flash实例教程 扫描文字效果
Flash MX 2004 ActionScript图文教程(十三)
快速制作您的flash图表
Flash MX 2004 ActionScript图文教程(十四)
Flash实例教程 变幻的字母
Flash MX 2004 ActionScript图文教程(十五)
Flash实例教程 相约北京 扬帆青岛
Flash教程实例 光线特效文字
Flash课件实例 画正多边形
Flash课件实例 平行四边形法则
Flash实例教程 小孔成像课件
精简Flash文件体积七法
Flash教程实例:水中浮动的文字
金鸡贺岁!Flash制作鸡年新春动画贺卡
Flash MX 2004新特性实例学习一

Flash动画制作 中的 MX2004--AS2.0 新特性实例教程(六)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 41 ::
收藏到网摘: n/a

18.ContextMenu Class和ContextMenuItem Class

  终于支持右键菜单了,有了这两个类,用户可以随心所欲的定制自己的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,separatorBefo