1

Flexアプリでユーザーがたとえば5分間アイドル状態になったことを確認するにはどうすればよいですか?

「アイドル」とは、ユーザーがアプリケーションをまったく操作していないことを意味します。

ありがとう!!

4

5 に答える 5

6

idleのイベントも参照してくださいSystemManager。このアプローチは、AIRまたはFlashPlayerで機能します。

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

アイドル時間を(サポートされていない方法で)取得するには、

SystemManager.mx_internal::idleCounter
于 2010-02-05T21:54:15.340 に答える
5

これはAIRアプリなので、NativeApplicationでUSER_IDLEイベントをリッスンできます。

//Set seconds for idle
this.nativeApplication.idleThreshold = 5; 
//listen for user idle
this.nativeApplication.addEventListener(Event.USER_IDLE,lock); 
于 2010-02-05T16:29:48.117 に答える
1

アプリケーションレベルでユーザーイベントをキャプチャするたびにリセットするタイマーを作成します。

タイマーが終了した場合は、ユーザーがその設定された時間アイドル状態になっていることがわかります。

// 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();
}
于 2010-02-04T21:34:32.763 に答える
1

次のコードを使用してタイムアウトを取得できます。

 <?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>
于 2012-01-12T07:18:49.507 に答える
0

@マイケルブリューワー-デイビス

systemManager.addEventListener(FlexEvent.IDLE, onIdle) マウスイベントには問題なく機能します。

キーボードイベントはどうですか。systemManagerキーボードイベントをリッスンする前に、いくつかの要素に焦点を合わせる必要があります。

部分的な解決策applicationCompleteイベントで、私は以下の行を追加しました

   stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);

現在、キーボードイベントがリッスンされています。

短所:アプリケーションが少なくとも1回クリックされた後にのみ機能します。その後、正常に動作した後

一度クリックする手間をかけずに、アプリケーションにキーボードイベントをリッスンさせる方法はありますか?を追加することを提案する人もstage.focus = thisいます。どちらも機能しませんでした(それでもクリックが必要でした)

于 2012-04-12T21:27:13.513 に答える