examples - ¿Cómo puedo detectar si una aplicación Flex pierde foco?
apache royale (4)
En Flex 4.6, este comando funciona systemManager.stage.addEventListener (Event.DEACTIVATE, deactivate) pero asegúrese de que la aplicación flash esté configurada como window (predeterminada). Cuando el modo era transparente, el evento no quedaba atrapado. Estableces el wmode en el html incrustado donde colocaste tu aplicación flash. ejemplo:
<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
...
Como seguimiento de esta pregunta: Desarrollar una solicitud de examen en línea, ¿cómo puedo prevenir a los tramposos?
¿Puedo detectar cuándo la aplicación Flex pierde su foco? es decir, si un usuario ha hecho clic en otra aplicación o ha abierto una pestaña del navegador?
Leí esto: Detectando cuando una aplicación Flex pierde el foco pero no era muy clara ...
Esto funcionará para detectar cuándo la ventana de Flex pierde el foco, pero para detectar cuándo la ventana recupera el foco sin tener que hacer clic en la aplicación de flex requiere una actualización en el contenedor de HTML, ¿correcto? Algo como:
<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()">
Estoy tratando de implementar esto, pero la función onAppFocusIn () no se está ejecutando una vez que regreso a la ventana de la aplicación Flex. Cuando veo la fuente, el código está allí. ¿¿Alguien sabe por qué??
Gracias, Annie
La parte clave del código en ese enlace es el
systemManager.stage.addEventListener(Event.DEACTIVATE,deactivate);
Los envíos de Flash Player activan y desactivan eventos cuando el foco entra y sale del reproductor. Todo lo que necesita hacer es crear un detector para ellos y reaccionar de manera apropiada.
Se puede ver un ejemplo más claro de cómo usar para activar y desactivar eventos en blog.flexaxamples.com .
Además, parece que los eventos de activación y desactivación tienen problemas en algunos navegadores. Colin Moock tiene más información sobre eso aquí.
Puede agregar un controlador para activar en la etiqueta de la aplicación principal. Esto detecta cada vez que la aplicación flex se enfoca. P.ej:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" activate="activateHandler(event);" deactivate="deactivateHandler(event);">