您的位置: 首页 > 技术文档 > 多媒体制作 > MX2004--AS2.0 新特性实例教程
Flash Paper使用方法二 回到列表 制造像素字体,FLASH MX2K4?
 MX2004--AS2.0 新特性实例教程

作者:jinni 时间: 2003-09-13 文档类型:原创 来自:蓝色理想

第 1 页 MX2004--AS2.0 新特性实例教程 [1]
第 2 页 MX2004--AS2.0 新特性实例教程 [2]
第 3 页 MX2004--AS2.0 新特性实例教程 [3]
第 4 页 MX2004--AS2.0 新特性实例教程 [4]
第 5 页 MX2004--AS2.0 新特性实例教程 [5]
第 6 页 MX2004--AS2.0 新特性实例教程 [6]

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()。

出处:蓝色理想
责任编辑:蓝色

上一页 MX2004--AS2.0 新特性实例教程 [5] 下一页

◎进入论坛Flash专栏版块参加讨论

相关文章 更多相关链接
Flash MX 2004 数据绑定
Flash dynamic mask 动态遮罩
Macromedia Captivate 发布
使用外部CSS设置FlashMX组件外观
Macromedia Flex Builder 发布
作者文章 更多作者文章
Flash Lite 与 J2ME 分析比较
给ActionScript初学者的建议
Flash MX 2004 支持的HTML标签
为AS2.0添砖加瓦-编写类扩展
MX2004--AS2.0 新特性实例教程
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:6/61个记录/页 转到 页 共6个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2