2010-02-04 98 views
1

如何知道用戶在我的Flex應用程序中閒置了5分鐘?Flex:檢測用戶空閒?

當我說「閒置」時,我的意思是用戶根本沒有與應用程序進行交互。

謝謝!

回答

6

也看到了idle事件SystemManager。這種方法適用於AIR或Flash Player。

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

您可以通過下面的代碼獲得使用

SystemManager.mx_internal::idleCounter 
+0

感謝您的信息! – 2010-02-08 14:26:54

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(); 
} 
+0

謝謝,我有一個問題,如果這是一個AIR應用程序,它會捕獲其他窗口的事件嗎?謝謝! – 2010-02-05 14:10:05

+0

此外,每當用戶與應用程序上的模式彈出窗口進行交互時,應用程序似乎不會接收事件?有沒有修復? – 2010-02-05 14:43:38

5

作爲,這是一個AIR應用程序,我可以監聽USER_IDLE事件了NativeApplication

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

這是Adobe Air的正確答案 – automaticoo 2012-08-01 08:32:56

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> 
0

@邁克爾 - 布魯爾 - 戴維斯

systemManager.addEventListener(FlexEvent.IDLE,onIdle)適用於鼠標事件。

鍵盤事件怎麼樣。在systemManager偵聽鍵盤事件之前,您必須關注某個元素。

部分解決: 在applicationComplete事件,我添加了下面線 stage.addEventListener(KeyboardEvent.KEY_DOWN,handleKeyDown); 現在鍵盤事件正在被偵聽。

缺點:只有在點擊至少一次應用程序後才能使用。然後工作正常

有沒有什麼辦法讓應用程序聽鍵盤事件沒有一次點擊的麻煩。有人建議添加「stage.focus = this」。 (還需要點擊)