FLASH中的双击和单击事件

news/2024/6/17 21:20:05

                                    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了,可以用在其它的任何组件上.


http://www.niftyadmin.cn/n/530370.html

相关文章

面试题3:数组中重复的数字

NowCoder 第一种方式&#xff1a;改变数组结构 <?php header("content-type:text/html;charsetutf-8"); /**数组中重复的数字 P39*/ function duplicate($numbers,&$duplication){//这里要特别注意~找到任意重复的一个值并赋值到duplication[0]//函数返回Tru…

辗除法求最大公约数_最大公约数怎么求?用这三种方法求解非常管用

最大公约数怎么求&#xff1f;同学们可以采用这三种方法进行求解&#xff0c;分别是常规法求最大公约数、短除法求最大公约数和辗转相除法求最大公约数。常规法求最大公约数1、求出每个数的约数同学们要先求出每个数的约数&#xff0c;也就是说要找出能整除这个数的所有整数&am…

[源码和文档分享]基于java实现的数据库管理系统

一、需求分析说明 通过对数据库系统原理的学习&#xff0c;掌握数据库管理系统的运行原理&#xff0c;尝试在给定的DBF文件操作框架的物理储存基础上通过java建立一个数据库管理系统&#xff0c;以更好的温习学习的知识。 基本功能如下&#xff1a; 实现创建表&#xff0c;并把…

storm 阿姆歌曲_Eminem经典歌词

【1】&#xff1a;I feel like Im caged in these chains and restraints. 感觉自己身处牢笼&#xff0c;身负枷锁。 --Eminem 《Evil Twin》【2】&#xff1a;Its a broke day but everything is okay 破碎的一天但一切都好 Im up all night, but everything is alright 彻夜…

Jupyter Notebook 的快捷键

Jupyter Notebook 的快捷键 Jupyter Notebook 有两种键盘输入模式。编辑模式&#xff0c;允许你往单元中键入代码或文本&#xff1b;这时的单元框线是绿色的。命令模式&#xff0c;键盘输入运行程序命令&#xff1b;这时的单元框线是灰色。 命令模式 (按键 Esc 开启) Enter : 转…

mysql中怎么用加法_MySQL 中=用法(长知识)

算术运算符MySQL 支持的算术运算符包括:运算符作用加法-减法*乘法/ 或 DIV除法% 或 MOD取余在除法运算和模运算中&#xff0c;如果除数为0&#xff0c;将是非法除数&#xff0c;返回结果为NULL。1、加mysql>select12;-----|12|-----|3|-----2、减mysql>select1-2;-----|1…

其他事件函数

对许多应用程序&#xff0c;现存包含和RED5不是相关的应用程序逻辑的类需要重用。为了使他们在客户端通过RTMP协议连接的时候可用&#xff0c;这些类需要作为RED5事件函数被注册。 现在有两种方法注册这些事件&#xff1a; 1. 把他们加到配备文件中&#xff1b; 2. …

mysql分组选择数据_我们可以按一列分组并选择MySQL中的所有数据吗?

是的&#xff0c;您可以为此使用group_concat()。让我们首先创建一个表-mysql> create table groupByOneSelectAll-> (-> StudentDetails varchar(100),-> StudentName varchar(100)-> );以下是使用insert命令在表中插入一些记录的查询-mysql> insert into g…