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