Как определить, теряет ли приложение Flex фокус?

StackOverflow https://stackoverflow.com/questions/46915

  •  09-06-2019
  •  | 
  •  

Вопрос

В продолжение этого вопроса: Разрабатывая приложение для онлайн-экзамена, как предотвратить мошенников?

Могу ли я обнаружить, что приложение Flex теряет фокус?то есть, если пользователь нажал на другое приложение или открыл вкладку браузера?

Я прочитал это: Обнаружение, когда приложение Flex теряет фокус но было не очень понятно...

Это было полезно?

Решение

Ключевой частью кода по этой ссылке является

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

Отправки Flash-плеера активируют и деактивируют события, когда фокус входит и покидает проигрыватель.Все, что вам нужно сделать, это создать для них прослушиватель и реагировать соответствующим образом.

Более понятный пример использования событий активации и деактивации можно увидеть на странице blog.flexaxamples.com.

Кроме того, похоже, что с событиями активации и деактивации в некоторых браузерах возникают проблемы. У Колина Мука больше информации об этом здесь.

Другие советы

Вы можете добавить обработчик активации в основной тег приложения.Это определяет, когда гибкое приложение переходит в фокус.Например:

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

Это будет работать для обнаружения того, когда окна Flex теряют фокус, но для определения того, когда окно восстанавливает фокус без необходимости фактического нажатия на гибкое приложение, требуется обновление в оболочке HTML, верно?Что-то вроде:

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

Я пытаюсь реализовать это, но функция onAppFocusIn() не выполняется, когда я возвращаюсь в окно гибкого приложения.Когда я просматриваю исходный код, код там.Кто-нибудь знает почему??

Спасибо, Энни

В Flex 4.6 эта команда работает SystemManager.Stage.AddeventListener (event.deactivate, deactivate), но убедитесь, что приложение Flash Wmode установлено в Window (по умолчанию).Когда wmode был прозрачным, событие не перехватывалось.Вы устанавливаете wmode во встроенном HTML-коде, в который помещаете свое флэш-приложение.пример:

<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

...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top