对于鼠标键的操作一直都是一个比较引人注意的问题,在这个方面我也收集了不少网友的资料,同时也出现了一些不好解决的问题。现在就将这些收集给大家作一个简单的罗列,也希望各位网友能帮忙讨论一下相关问题的解决方法。 〖 关于鼠标右键菜单 〗 鼠标右键菜单一直都是大家比较热门的话题,从 Flash MX 开始就已经可以自定义鼠标右键菜单了,这里就将一些相关的对象及使用方法的相关资料介绍给大家。 右键菜单控制主要使用的是两个对象: ContextMenu 对象用于产生一个新的菜单数组 ContextMenuItem 对象用于产生一个新的菜单项 对于它们的使用,我举个简单的例子来说明。 my_cm = new ContextMenu(); // 申明一个新的菜单对象 my_cm.hideBuiltInItems(); // 屏敞当前的右键菜单(当然,设置菜单和版本信息暂无法屏敞) my_cm.customItems.push(new ContextMenuItem("菜单一", Do_menu_01)); // 创建一个新的子菜单,名为“菜单一”,并设置 Do_menu_01 为响应函数 my_cm.customItems.push(new ContextMenuItem("菜单二", Do_menu_02, true)); // 创建一个新的子菜单,名为“菜单二”,并加一条分隔线 my_cm.customItems[0].enabled = false; // 设置第一个菜单项为不可用菜单(“菜单一”不可用,灰色显示) my_cm.customItems[1].visible = flase; // 设置第二个菜单项不显示(“菜单二”不显示,相当于暂时无此菜单) function Do_menu_o1(obj,item) { // “菜单一”的响应函数具体内容 } function Do_menu_02(obj,item) { // “菜单二”的响应函数具体内容 } _root.menu = my_cm; // 将当前定义的菜单绑定到主场景的右键菜单上 上例中,my_cm 是一个新菜单对象,而 my_cm.customItems 则是菜单对象中的一个属性,它实际上是一个对象数组,从下标 0 开始依次表示定义的每一个菜单项。 ContextMenuItem 对象定义的时候有五个参数,后三个都是可选的布尔型对象。 var my_cm = new ContextMenuItem(菜单名,响应函数名,是否加分隔线,是否可用,是否显示) 对于定义的菜单,可以和 _root 绑定,也可以绑定到按钮、影片或动态文本对象上。具体的应用及操作大家可以试试。 〖 关于鼠标中键 〗 现在大家用的鼠标一般都有三个键:左键、右键和滑轮,滑轮一般又称之为鼠标中键。一般的人在使用鼠标的时候都知道引用一些相关的状态,如 onPress ononRelease 等,但真正意义上来说,鼠标只有四种状态:键被按下(onMouseDown)、键被弹起(onMouseUp)、鼠标移动(onMouseMove)和滚动滑轮(onMouseWheel)。前三种状态大家对它都比较熟悉了,但最后一个大家可能很少使用到。 在 Flash 中,可以单独定义鼠标的各个状态(经一些网友分析,单独定义各个状态比系统中已经定义好的状态响应速度要快,而且生成的播放文件占用空间也会小一点)。 例如: var mouseListener = new Object(); // 申明一个新的对象,用于定义鼠标操作 mouseListener.onMouseMove = function() { // 鼠标移动时的响应函数 } mouseListener.onMouseDown = function() { // 鼠标键按下时响应函数 } mouseListener.onMouseUp = function() { // 鼠标键松开时响应函数 } mouseListener.onMouseWheel = function(delta) { // 鼠标滑轮滚动时响应函数 }; Mouse.addListener(mouseListener); // 将自定义鼠标响应操作绑定到系统的鼠标对象上 上例中就已经自定义了鼠标的操作状态,先将这些操作定义出来,再绑定到指定的对象上(本例中是绑定到系统的鼠标对象上)。 格式为: 对象名.addListener(鼠标操作对象名); 但是,鼠标按下具体是按的哪个键呢?这里还的进行一番分析。 Key 对象就可以判断当前按下的是哪个键。利用 Key.isDown(N) 可以精确的进行分析,其中,N = 1 代表左键,N = 2 代表右键,N = 4 代表滑轮(以上仅针对PC机)。 例如: function Cleck_mouse() { if (Key.isDown(1)) { // 左键按下时响应代码 } if (Key.isDown(2)) { // 右键按下时响应代码; } if (Key.isDown(4)) { // 滑轮(或中键)按下时响应代码; } }; 这样,大家对于鼠标的各个键的按下操作可以进行准确判断了。但是,如何判断滑轮的移动呢? 请大家再来看前面的例子: mouseListener.onMouseWheel = function(delta) { // 鼠标滑轮滚动时响应函数 }; delta 是一个系统返回的值,它代表滑轮滑动的方向及行数,向上则为正值,向下则为负值,其值的大小由系统定义(可以在控制面板的鼠标中进行设置)。有了这个值,我们就可以执行一个特殊的操作了。 例如,有一个对象名为 my_mc ,想通过滑轮来控制它放大或缩小。 mouseListener.onMouseWheel = function(delta) { if(delta>0) { my_mc._xscale *= 1.1; my_mc._yscale *= 1.1; } if(delta<0) { my_mc._xscale *= 0.9; my_mc._yscale *= 0.9; } }; 这样,在使用时,先在影片点击鼠标左键(取得热点),接着移动滑轮就可以看到效果了。 〖 鼠标的双击 〗 双击鼠标的操作实际上是一个延时读取的操作,大家可以看下面的例子: var Begin_time,Last_time; var DClick = new Object(); DClick.onMouseDown = function(times) { Begin_time = getTimer(); if(Begin_time - Last_time <= times) { // 双击鼠标左键时的操作代码 } Last_time = getTimer(); } Mouse.addListener(DClick); 其中,times 为大家定义的一个时间间隔,1000 代表一秒,一般大家定义成为 300 至 500 之间就可以了。 以上是我收集的一些与鼠标相关的资料 |