Frage

Im Anschluss an diese Frage: Wie verhindere ich bei der Entwicklung einer Online-Prüfungsanwendung Betrüger?

Kann ich erkennen, wenn die Flex-Anwendung ihren Fokus verliert?Das heißt, wenn ein Benutzer auf eine andere Anwendung geklickt oder einen Browser-Tab geöffnet hat?

Ich lese das: Erkennen, wenn eine Flex-Anwendung den Fokus verliert war aber nicht ganz klar...

War es hilfreich?

Lösung

Der Schlüsselteil des Codes unter diesem Link ist der

systemManager.stage.addEventListener(Event.DEACTIVATE,deactivate);

Der Flash-Player sendet Aktivierungs- und Deaktivierungsereignisse, wenn der Fokus in den Player gelangt und ihn verlässt.Sie müssen lediglich einen Zuhörer für sie erstellen und angemessen reagieren.

Ein klareres Beispiel für die Verwendung von Aktivierungs- und Deaktivierungsereignissen finden Sie unter blog.flexaxamples.com.

Außerdem sieht es so aus, als ob die Aktivierungs- und Deaktivierungsereignisse in einigen Browsern Probleme bereiten. Colin Moock hat hier weitere Informationen dazu.

Andere Tipps

Sie können im Hauptanwendungs-Tag einen Handler für die Aktivierung hinzufügen.Dies erkennt, wann immer die Flex-Anwendung fokussiert wird.Z.B:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" activate="activateHandler(event);" deactivate="deactivateHandler(event);">

Dies funktioniert, um zu erkennen, wann das Flex-Fenster den Fokus verliert, aber um zu erkennen, wann das Fenster den Fokus wiedererlangt, ohne tatsächlich auf die Flex-App klicken zu müssen, ist ein Update im HTML-Wrapper erforderlich, richtig?Etwas wie:

<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = ${version_major};
// Minor version of Flash required
var requiredMinorVersion = ${version_minor};
// Minor version of Flash required
var requiredRevision = ${version_revision};
// -----------------------------------------------------------------------------
// -->


    function onAppFocusIn()
    {
        ${application}.onAppFocusIn();
        alert("onAppFocusIn");
    }

</script>
<body scroll="no" onFocus="onAppFocusIn()">

Ich versuche, dies zu implementieren, aber die Funktion onAppFocusIn() wird nicht ausgeführt, sobald ich zum Flex-App-Fenster zurückkehre.Wenn ich mir die Quelle ansehe, ist der Code da.Weiß jemand warum??

Danke, Annie

In Flex 4.6 funktioniert dieser Befehl systemManager.Stage.AdDeVentListener (Event.deactivate, deaktiviert) jedoch sicher, dass die Flash -App WMODE auf Fenster eingestellt ist (Standard).Wenn der Wmode transparent war, wurde das Ereignis nicht abgefangen.Sie legen den Wmode im eingebetteten HTML fest, in dem Sie Ihre Flash-App ablegen.Beispiel:

<object classid="clsid:D27WEE-A16D-21cf-90F2-422253540410" width="100%" height="100%"
id="MyApp" name="MyApp" align="middle">
<param name="movie" value="MyApp.swf?v=1.00.008" />
<param name="wmode" value="transparent">      <----- take out this

...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top