FLASH 鼠标经过MC后,如果在MC上停留2秒,再触发自定义函数。
发布网友
发布时间:2022-10-02 18:48
我来回答
共3个回答
热心网友
时间:2023-09-20 16:44
因为这里做了一个延时的功能,所以要先做一个简单的定时器用来计时。定时器的原理就是定义一个变量(Framer)用来储存时间,这里的时间转换为帧数。如果帧频为12帧/秒的话那么记录2秒就要用24帧。接着再定义一个空的电影剪辑,它每帧都会减少Framer的值,当Framer的值减到0的时候就是说过了2秒钟了,然后执行bb函数就可以了。如果鼠标在2秒内移出MC了就要停止计数。
具体脚本如下,起响应的电影剪辑命名为Delay_mc,所有脚本写在帧上:
/*AS2.0*/
var Framer:Number;
//定义用于计时的空电影剪辑
this.createEmptyMovieClip("DelayMaster",this.getNextHighestDepth());
//定义鼠标移动到MC上动作
Delay_mc.onRollOver = function() {
//定义延时时间
Framer = 24;
//开始计时
DelayMaster.onEnterFrame = function() {
Framer--;
//如果24帧减完,表示已经过了2秒
if (Framer<=0) {
//则执行bb函数,同时停止计时。
bb();
delete DelayMaster.onEnterFrame;
}
};
};
//定义鼠标移出MC动作
Delay_mc.onRollOut = Delay_mc.onReleaseOutside = function() {
//停止计时
delete DelayMaster.onEnterFrame;
};
function bb() {
trace("好");
}
Q 276701191
热心网友
时间:2023-09-20 16:45
你这个只需要用到setInterval就可以实现
mc.onRollOver = function() {
settime = setInterval("bb",2000); //第1个是要执行的函数名需在""内,第2个参数是时间,按毫秒计算,意思就是每隔2秒执行一次bb函数.
}
mc.onRollOut = function() {
clearInterval(settime); //清除settime设定的setInterval
}
如果你只想执行一次bb函数,需要你在bb函数中写上 clearInterval(settime);
热心网友
时间:2023-09-20 16:45
在鼠标移入mc的onRollOver事件中开始setInterval
在称出事件onRollOut中添加clearInterval
有什么不明白 继续补充