Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Flex4:idleCounter似乎已经发生了变化——大多数在线示例现在都被破坏了!_Actionscript 3_Flex4 - Fatal编程技术网

Actionscript 3 Flex4:idleCounter似乎已经发生了变化——大多数在线示例现在都被破坏了!

Actionscript 3 Flex4:idleCounter似乎已经发生了变化——大多数在线示例现在都被破坏了!,actionscript-3,flex4,Actionscript 3,Flex4,我有一个我认为很简单的问题。我将在登录成功时调用一个基本计时器,然后设置几个处理程序来刷新计划中的一些数据。(我没有粘贴计时器处理程序,因为我认为它们所做的并不重要)无论如何,我正在尝试在应用程序空闲时关闭这些定时刷新,但是: if (e.currentTarget.mx_internal::idleCounter > 15000) { 永远不会被触发。我认为这是因为Flex4处理这些对象的方式不同,但我在文档中找不到它。搜索idleCounter结果甚至是空的 protecte

我有一个我认为很简单的问题。我将在登录成功时调用一个基本计时器,然后设置几个处理程序来刷新计划中的一些数据。(我没有粘贴计时器处理程序,因为我认为它们所做的并不重要)无论如何,我正在尝试在应用程序空闲时关闭这些定时刷新,但是:

    if (e.currentTarget.mx_internal::idleCounter > 15000) {
永远不会被触发。我认为这是因为Flex4处理这些对象的方式不同,但我在文档中找不到它。搜索idleCounter结果甚至是空的

protected function getUserByIDResult_resultHandler(event:ResultEvent):void
{

    var sysMan:ISystemManager = FlexGlobals.topLevelApplication.systemManager;
    sysMan.addEventListener(FlexEvent.IDLE, userIdle);

    session.user = event.result as User;

    timer = new Timer(5000);
    timer.addEventListener(TimerEvent.TIMER, timer_short);
    timer.start();

    timer2 = new Timer(10000);
    timer2.addEventListener(TimerEvent.TIMER, timer_long);
    timer2.start();

    currentState='Main';
}


private function userIdle(e:FlexEvent):void {
    if (e.currentTarget.mx_internal::idleCounter > 15000) {
        timer.stop();
        timer2.stop();
    }
    if (e.currentTarget.mx_internal::idleCounter < 15000) {
        if ( timer.running == false) {
            timer.start();
            timer2.start();
        }
    }
}
受保护函数getUserByIDResult\u resultHandler(事件:ResultEvent):void
{
var sysMan:ISystemManager=FlexGlobals.topLevelApplication.systemManager;
sysMan.addEventListener(FlexEvent.IDLE,userIdle);
session.user=event.result作为用户;
定时器=新定时器(5000);
timer.addEventListener(TimerEvent.timer,timer\u short);
timer.start();
timer2=新定时器(10000);
timer2.addEventListener(TimerEvent.TIMER,TIMER_long);
timer2.start();
currentState='Main';
}
私有函数userIdle(e:FlexEvent):void{
if(e.currentTarget.mx_internal::idleCounter>15000){
timer.stop();
timer2.stop();
}
if(e.currentTarget.mx_internal::idleCounter<15000){
if(timer.running==false){
timer.start();
timer2.start();
}
}
}

因此,在进一步研究之后,我认为空闲事件确实是前进的方向。这里有一个简化的例子(注意,计时是“近似的”,这对我来说是可以的,可能是大多数空闲计时器)

private function userIdle(e:FlexEvent):void {
            idleCounter++;
            trace(idleCounter);
            if (idleCounter > 100) {
                seconds_since_idle += 10;
                idleCounter = 0;
                if (seconds_since_idle > 60) {
                    trace("idle longer than 1 minute");
                    if (timer.hasEventListener(TimerEvent.TIMER)) {
                        timer.removeEventListener(TimerEvent.TIMER, timer_short);
                    }
                }
                if (seconds_since_idle > 180) {
                    trace("idle longer than 3 minutes");
                    sysMan.removeEventListener(FlexEvent.IDLE, userIdle);
                    session.user = null;
                    currentState='Login';
                    Alert.show("You have been logged out due to inactivity.",
                        "Alert", 
                        Alert.OK);
                }
            } 
        }