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

Flash动画制作
Flash绘制简单的楼梯动画场景
关于影片剪辑在主场景中位置修改的Flash技巧
Flash教程:单选题的制作
Flash绘画技巧实例:鼠绘好看的水仙花
Flash人物走动动画的制作技巧分析
Flash钢笔工具绘图技巧详细分析
Flash辅助线轻松辅助工具绘制女孩脸部
Flash新手鼠绘教程(2):熟悉鼠绘工具
Flash新手鼠绘教程(1):怎样学习鼠绘
Flash新手鼠绘(3):漂亮的卡通花草场景
FLASH CTRL+C SHORTCUT IN IE 快捷键在IE中失效
Flash 绘画技巧 投影滤镜设置阴影
Flash 视频广告的定位兼容性问题
SWFText轻松制作Flash贺卡
人物走动Flash动画的制作技巧分析
Flash钢笔工具绘图的技巧详细讲解
Flash新手鼠绘(9):好看的月季花
Flash新手鼠绘(10):美丽逼真的郁金香
Flash新手鼠绘(11):逼真的瓢虫
FLASH8.0鼠绘实例(1):时尚气质美女

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 25 ::
收藏到网摘: 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