对于鼠标键的操作一直都是一个比较引人注重的问题,在这个方面我也收集了不少网友的资料,同时也出现了一些不好解决的问题。现在就将这些收集给大家作一个简单的罗列,也希望各位网友能帮忙讨论一下相关问题的解决方法。
〖 关于鼠标右键菜单 〗
鼠标右键菜单一直都是大家比较热门的话题,从 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 之间就可以了。
以上是我收集的一些与鼠标相关的资料