Domanda

In seguito a questa domanda: Sviluppo di una domanda per un esame online: come posso prevenire gli imbroglioni?

Posso rilevare quando l'applicazione Flex perde il focus?cioè se un utente ha fatto clic su un'altra applicazione o ha aperto una scheda del browser?

Ho letto questo: Rilevare quando un'applicazione Flex perde il focus ma non era molto chiaro...

È stato utile?

Soluzione

La parte fondamentale del codice in quel collegamento è il

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

Il player Flash invia eventi di attivazione e disattivazione quando il focus entra ed esce dal player.Tutto quello che devi fare è creare un ascoltatore per loro e reagire in modo appropriato.

Un esempio più chiaro di come utilizzare gli eventi di attivazione e disattivazione può essere visualizzato all'indirizzo blog.flexaxamples.com.

Inoltre, sembra che gli eventi di attivazione e disattivazione presentino problemi in alcuni browser. Colin Moock ha maggiori informazioni al riguardo qui.

Altri suggerimenti

È possibile aggiungere un gestore per l'attivazione nel tag dell'applicazione principale.Questo rileva ogni volta che l'applicazione flessibile viene messa a fuoco.Per esempio:

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

Funzionerà per rilevare quando la finestra Flex perde lo stato attivo, ma per rilevare quando la finestra riacquista lo stato attivo senza dover effettivamente fare clic sull'app Flex è necessario un aggiornamento nel wrapper HTML, corretto?Qualcosa di simile a:

<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()">

Sto cercando di implementarlo ma la funzione onAppFocusIn() non viene eseguita quando torno alla finestra dell'app flessibile.Quando visualizzo il sorgente, il codice è lì.Qualcuno sa perché??

Grazie, Annie

In Flex 4.6, questo comando Works SystemManager.stage.addeventListener (event.deactivate, deactivate) ma assicurati che l'app flash sia impostata su finestra (impostazione predefinita).Quando il wmode era trasparente, l'evento non veniva rilevato.Imposti il ​​wmode nell'HTML incorporato in cui inserisci l'app flash.esempio:

<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

...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top