FLASH中的双击和单击事件 |
| |
看到国外BLOG上的关于双击与单击的事件.我试了一下挺有意思.没准什么时候能用上. 原理就我们定义一个时间间隔,如果是双击那么一定会有一个时间间隔,如果不是双击那这个时间间隔就会是空的.基于以下这种情况,事情就变得比较的简单了. 在场景中放置一个按钮,在主帧上加入如下代码: //定入双击的速度间隔为250毫秒. var doubleClickSpeed = 250; //定义一个我们在操作过程的间隔变量 var clickInterval; // 定义一个清除clickInterval的函数.因为我们要不断的单击双击. function endClickTimer(){ clearInterval(clickInterval); clickInterval = null; } //当按钮或影片剪辑被单击或双击时,定义一个调用函数. function select(){ //如果clickInterval不为空则为双击 if(clickInterval != null){ trace("Double Clicked"); endClickTimer(); //否则视为单击. }else{ trace("Single Clicked"); clickInterval = setInterval(this,"endClickTimer",doubleClickSpeed); } } MyButton.onPress = function(){ select(); } 在上面的代码中我们在输出面板上看到双击时会输出单击和双击,这也许不是我们想要的.通常我们需要输出一种状态.: 将上边的代码做一下修改: //定入双击的速度间隔为250毫秒. var doubleClickSpeed = 250; //定义一个我们在操作过程的间隔变量 var clickInterval; // 定义一个清除clickInterval的函数.因为我们要不断的单击双击. function endClickTimer(){ clearInterval(clickInterval); clickInterval = null; } //定义一个获取单击的函数 function click(){ trace("Single Click"); endClickTimer(); } //当按钮或影片剪辑被单击或双击时,定义一个调用函数. function select(){ //如果clickInterval不为空则为双击 if(clickInterval != null){ trace("Double Clicked"); endClickTimer(); //否则视为单击. }else{ trace("Single Clicked"); clickInterval = setInterval(this,"click",doubleClickSpeed); } } MyButton.onRelease = function(){ select(); } 注意红色是我们修改过的地方.这时在输出面板上我们看到的应是正确的输出. 在FLASHMX 2004的V2组件中获取双击事件: 在场景中拖入一个LIST组件命名为List_lb // 在主帧上加入如下代码 var lastSelected; function endClickTimer(){ clearInterval(clickInterval); clickInterval = null; } //定义调用函数 function change(){ var selected = List_lb.selectedIndex; if(clickInterval != null && selected == lastSelected){ trace("Double Clicked"); endClickTimer(); }else{ if(clickInterval != null){ endClickTimer(); } clickInterval = setInterval(this,"endClickTimer",250); } lastSelected = selected; } List_lb.dataProvider = new Array(1,2,3,4,5); // 调用事件 List_lb.addEventListener("change",this); 一切都OK了,可以用在其它的任何组件上. |