频繁点击检测类:ClickCheck
即时获得麻球游戏开发的最新消息,关注游戏开发者热门讨论,请各位开发者申请加入麻球官方群:121304476
也可以follow catfly围脖:t.sina.com.cn/iscat

我个人写的类文件中,我比较喜欢这个频繁点击检测类:ClickCheck。它是个有趣的家伙,但也让人“讨厌”,通常在找茬游戏中我们可以用到它。

当用户快速频繁的点击错误的区域时,它就会抛出警告,

puzzle err

并且扣掉我们大把游戏时间。

puzzle err

ClickCheck是一个单例,使用起来很方便。


ClickCheck.toCheck(_target);
//target是需要检测的区域,通常是一个mc
//只要在这个mc上点击,就会进行检测是否有频繁点击

还可以自定义最大点击数与点击间隔时间


ClickCheck.toCheck(_target,_totalNum,_timeOff);
//totalNum是当用户频繁点击多少次后就触发事件
//timeOff是判断多长时间间隔内再次点击视为频繁点击

完全的ClickCheck代码:


package{
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import flash.utils.getTimer;

        /**
        * @author robin
        */
        public class ClickCheck {
                private var oldClickTime:Number = 0;
                private var clickNum:uint = 0;
                private var totalNum:uint;
                private var timeOff:Number;

                private static var instance:ClickCheck;

                public function ClickCheck(){}

                public static function toCheck(_target:Sprite,_totalNum:uint=3,_timeOff:Number=0.4):void{
                        if(instance==null){
                                instance = new ClickCheck();
                        }
                        instance.totalNum = _totalNum;
                        instance.timeOff = _timeOff;
                        _target.addEventListener(MouseEvent.CLICK, instance.cClick);
                }
                private function cClick(evt:MouseEvent):void{
                        var clickTime:Number = getTimer()*0.001;

                        if(oldClickTime!= 0 && (clickTime - oldClickTime) <= instance.timeOff){
                                trace("[one fast click]");
                                if(clickNum < instance.totalNum){
                                        clickNum++;
                                }
                                if(clickNum == instance.totalNum){
                                        trace("[----no more fast click]");

                                        clickNum = 0;
                                }
                        }else{
                                clickNum = 0;
                        }

                        oldClickTime = clickTime;

                }
        }
}

接下来我要留一个问题供大家思考,如果需要检测多个目标区域呢,比如有多个mc需要检测,并且用户可能一会在这个mc上点几下,一会又在另一些mc上点几下。
我就不写了,把空间留给大家。

猫推拼盘

One Response to “频繁点击检测类:ClickCheck”

  1. stone 说:

    private static var instance:ClickCheck;

    这里是亮点  [引用]

Leave a Reply