سؤال

كيف يمكنني معرفة متى كان المستخدم خاملا لتقول 5 دقائق على تطبيق Flex الخاص بي؟

عندما أقول "idle" أعني أن المستخدم لم يتفاعل مع التطبيق على الإطلاق.

شكرا!!

هل كانت مفيدة؟

المحلول

انظر أيضا idle الحدث في SystemManager. وبعد هذا النهج يعمل في الهواء أو فلاش لاعب.

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

يمكنك الحصول على وقت الخمول (بطريقة غير مدعومة) باستخدام

SystemManager.mx_internal::idleCounter

نصائح أخرى

كونه هذا هو تطبيق هوائي، يمكنني فقط الاستماع إلى حدث User_idle على NativeApplication

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

michael brewer-davis

يعمل SystemManager.addeventlistener (Flexevent.idle، Onidle) غرامة لأحداث الماوس.

ماذا عن أحداث لوحة المفاتيح. يجب أن يكون لديك التركيز على بعض العناصر قبل أن يستمع SystemManager إلى أحداث لوحة المفاتيح.

حل جزئي: في حدث ApplicationComcomplete، أضفت مرحلة السطر أدناه.AddeventListener (KeyboardEvent.Key_Down، HandlekeyDown)؛ الآن يتم الاستماع إلى أحداث لوحة المفاتيح.

في وضعه يعمل فقط بعد النقر فوق التطبيق على الأقل مرة واحدة. ثم بعد أن يعمل بشكل جيد

هل هناك أي طريقة لجعل التطبيق يستمع إلى أحداث لوحة المفاتيح دون مشاحنات النقر مرة واحدة. اقترح البعض إضافة "المرحلة .Focus = هذا". لم تنجح أيضا. (لا يزال هناك حاجة])

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top