import mx.events.EventDispatcher;
import mx.utils.Delegate;
import mx.core.UIObject;
class DbClick {
private var firstClickTime:Number;
private var lastClickTime:Number;
private var n:Number = 0;
public var addEventListener:Function;
public var removeEventListener:Function;
private var dispatchEvent:Function;
//
private var mc:Object;
function DbClick(_mc:Object) {
mc=_mc;
EventDispatcher.initialize(mc);
mc.onRelease = Delegate.create(this, ifDbClick);
}
public static function init(_mc:Object):Void{
new DbClick(_mc)
}
private function ifDbClick():Void {
if (n == 0) {
n = 1;
firstClickTime = getTimer();
} else {
n = 0;
lastClickTime = getTimer();
}
//trace("WWW:"+(mc instanceof UIObject))
if(mc instanceof UIObject){
if (Math.abs(lastClickTime-firstClickTime)<300) {
mc.dispatchEvent({type:'onDbClick', target:mc});
}else{
mc.dispatchEvent({type:'onSiClick',target:mc});
}
}else{
if (Math.abs(lastClickTime-firstClickTime)<300) {
mc.dispatchEvent({type:'McDoubleClick', target:mc});
}else{
mc.dispatchEvent({type:'McSingleClick',target:mc});
}
}
}
}
用法:在stage裡拖入一個UIObject和一個MC
在AS幀加入以下代碼
import DbClick;
DbClick.init(_btn);
DbClick.init(_mc);
//
onSiClick = function (evtObject:Object) {
evtObject.target.label = "Single Click";
};
onDbClick = function (evtObject:Object) {
evtObject.target.label = "Double Click";
};
//
_btn.addEventListener("onSiClick", this);
_btn.addEventListener("onDbClick", this);
//
function McSingleClick(evtObject:Object) {
trace("MC:"+evtObject.target.txt)
evtObject.target.txt.text = "Single Click";
}
function McDoubleClick(evtObject:Object) {
evtObject.target.txt.text = "Double Click";
}
_mc.addEventListener("McSingleClick", this);
_mc.addEventListener("McDoubleClick", this);
2007年3月18日星期日
一个简单的双击类 [原]
订阅:
博文评论 (Atom)

0 评论:
发表评论