flash 中用单击事件区别处理双击和单击

flash 虽然自己有双击事件, 但是跟所有的双击事件一样, 触发之前会先触发一个单击,

这对于视频播放器中单击暂停/继续, 双击全屏的操作会造成干扰, 

遂用单击模拟, 处理两种事件, 代码如下:

private var _dbTimeoutId:int = 0;
private var _isClicked:Boolean = false;

film.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent):void
{
    if (_isClicked)
    {
        // double click
        _isClicked = false;
        clearTimeout(_dbTimeoutId);
        
        if (stage.displayState == StageDisplayState.FULL_SCREEN)
        {
            stage.displayState = StageDisplayState.NORMAL;
        }
        else
        {
            stage.displayState = StageDisplayState.FULL_SCREEN;
        }
    }
    else
    {
        // single click
        _isClicked = true;
        _dbTimeoutId = setTimeout(function():void
            {
                _isClicked = false;
                film.togglePause();
            }, 350); // 350 ms 内认为是双击
    }
});

另外多谢 @我佛山人 的提醒, 类似 FileReference.browse() 这种必须靠用户行为触发的操作, 不适用这个方法, 这个实际上是 SetTimeout 调用了单击方法. 所以这还是有一点点局限性的 :D


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值