百度首页 | 百度空间
 
查看文章
 
Flash 双击类
2008-04-29 00:24

以下是引用片段:
import mx.utils.Delegate;
import mx.core.UIObject;
class DBClick {
   public static var DELAY_TIME:Number = 200;
   private var _mc:UIObject;
   private var intervalID:Number;
   private var delayTime:Number;
   public function DBClick(mc:UIObject) {
     _mc = mc;
     _mc.onMouseUp = Delegate.create(this, onClick);
   }
   private function onClick() {
     if (!delayTime) {
       delayTime = getTimer();
       if (intervalID != undefined) {
         clearInterval(intervalID);
       }
       intervalID = setInterval(this, "run", DELAY_TIME);
     } else {
       if ((getTimer()-delayTime)<DELAY_TIME) {
         _mc.dispatchEvent({target:_mc, type:'onDClick'});
       }
       delayTime = null;
     }
   }
   private function run():Void {
     if (delayTime) {
       _mc.dispatchEvent({target:_mc, type:'onClick'});
       delayTime = null;
       clearInterval(intervalID);
     }
   }
   public static function init(mc:UIObject) {
     var dClick = new DBClick(mc);
   }
}

使用:

import DBClick;
DBClick.init(_btn);
_btn.addEventListener("onDClick", this);
_btn.addEventListener("onClick", this);
function onDClick()
{
   _btn.label="你刚才双击了我"
}
function onClick()
{
   _btn.label="你刚才单击了我"
}


类别:Flash Actionscript | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2008-04-29 00:49
在FLASH的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);

 
2
2008-04-29 00:58
var time = 500;//判断双击的间隔时间为500毫秒。
var k1 = 0;
var k2 = 0;
onMouseDown = function () {
n = !n;
n ? (k1=getTimer()) : (k2=getTimer());
Math.abs(k2-k1)<time ? (trace("双击")) : (clicker());
};
function clicker() {
tmp = getTimer();
this.onEnterFrame = function() {
if (getTimer()-tmp>time) {
delete this.onEnterFrame;
if (Math.abs(k2-k1)>time) {
trace("单击");
}
}
};
}
 
3
2008-04-29 14:00
function(_mc){
var time = 500;//判断双击的间隔时间为500毫秒。
var k1 = 0;
var k2 = 0;
_mc.onRelease = function () {
n = !n;
n ? (k1=getTimer()) : (k2=getTimer());
Math.abs(k2-k1)<time ? (trace("双击")) : (trace("单"));
};
}//最终用到的.
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu