Flex里的空闲检测-IDLE
分类于 生活随笔 十二月 29th, 2010 by marco – 1 CommentFlex里面也有空闲检测,本来为了实现这个功能还要去全局侦听鼠标和键盘事件,有了IDLE这下可方便多了。
IDLE由SystemManager进行管理,所以要检测IDLE就要对SystemManager进行侦听,方法如下:
/** * 主程序初始化时对systemManager进行侦听 */ public function init():void { systemManager.addEventListener(FlexEvent.IDLE, idleHandler); } /** * idle事件处理 */ private function idleHandler(event:FlexEvent):void { var idleCounter:int = systemManager.mx_internal::idleCounter; if( idleCounter >= 900)// 100毫秒一次,900就等于90秒 systmeIdle(); } /** * 发送系统空闲消息 */ private function systmeIdle():void { // TO DO ... }
这里要注意的是FlexEvent.IDLE事件派发规则是:当 1 秒内没有任何键盘和鼠标活动时,每隔 100 毫秒分派一次。
根据API所知,我们不能去设定系统空闲多少秒以后才派发IDLE事件,这里我们只能在idleHandler事件处理方法里面根据systemManager对IDLE事件派发的次数来计算系统已经空闲了多长时间,悲剧的这个事件的派发次数还被隐藏起来了,在mx_internal命名空间下,如果要得到这个值我们不得不使用mx_internal这个命名空间,莫名其妙的多走了一步,方法如下:
// 先把名导入 import mx.core.mx_internal; // 对象.命名空间::属性名 systemManager.mx_internal::idleCounter;