문제

Flex 앱에서 사용자가 5분 동안 유휴 상태인지 어떻게 알 수 있나요?

"유휴"라고 말하면 사용자가 애플리케이션과 전혀 상호 작용하지 않았다는 의미입니다.

감사해요!!

도움이 되었습니까?

해결책

참조 idle 이벤트 SystemManager. 이 접근법은 Air 또는 Flash Player에 대해 작동합니다.

application.systemManager.addEventListener(FlexEvent.IDLE, onIdle);

유휴 시간 (지원되지 않는 방식으로)을 사용할 수 있습니다.

SystemManager.mx_internal::idleCounter

다른 팁

이것이 에어 앱이기 때문에, 나는 nativeapplication에서 user_idle 이벤트를들을 수 있습니다.

//Set seconds for idle
this.nativeApplication.idleThreshold = 5; 
//listen for user idle
this.nativeApplication.addEventListener(Event.USER_IDLE,lock); 

응용 프로그램 수준에서 사용자 이벤트를 캡처 할 때마다 재설정 할 타이머를 만듭니다.

타이머가 종료되면 사용자가 해당 세트 시간 동안 유휴 상태라는 것을 알 수 있습니다.

// I am capturing only mouseMove and keyDown. That _should_ be enough to handle most user interactions.
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" mouseMove="onUserEvent" keyDown="onUserEvent">

...

private function onUserEvent(event:Event):void
{
    timer.reset();
}

다음 코드를 사용하여 시간을 얻을 수 있습니다.

 <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               minWidth="955" minHeight="600"
               initialize="init(event)">
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.core.mx_internal;
            import mx.events.FlexEvent;

            protected function init(event:FlexEvent):void
            {
                systemManager.addEventListener(FlexEvent.IDLE, handleApplicationIdle);
            }

            private function handleApplicationIdle(event:FlexEvent):void
            {
                if(event.currentTarget.mx_internal::idleCounter == 60){
                    Alert.show("Time out happened");
                }
            }
        ]]>
    </fx:Script>
</s:Application>

@마이클 브루어-데이비스

systemManager.addEventListener(FlexEvent.IDLE, onIdle)은 마우스 이벤트에 대해 잘 작동합니다.

키보드 이벤트는 어떻습니까?systemManager가 키보드 이벤트를 수신하기 전에 일부 요소에 초점을 맞춰야 합니다.

부분적인 해결책:applicationComplete 이벤트에서 아래 줄을 추가했습니다. stage.addEventListener (KeyboardEvent.KEY_DOWN, 핸들 키 다운);이제 키보드 이벤트가 수신됩니다.

불리: 응용 프로그램을 한 번 이상 클릭한 후에만 작동합니다.그런 다음 잘 작동하면

한 번 클릭하는 번거로움 없이 응용 프로그램이 키보드 이벤트를 수신하도록 할 수 있는 방법이 있습니까?일부는 "stage.focus = this"를 추가할 것을 제안했습니다.역시 작동하지 않았습니다.(여전히 클릭이 필요했습니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top