Как определить, что приложение Flex теряет фокус? - PullRequest
4 голосов
/ 06 сентября 2008

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

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

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

Ответы [ 4 ]

5 голосов
/ 06 сентября 2008

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

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

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

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

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

1 голос
/ 20 мая 2011

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

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

0 голосов
/ 09 декабря 2013

В Flex 4.6 эта команда работает systemManager.stage.addEventListener (Event.DEACTIVATE, deactivate) но убедитесь, что для wmode flash-приложения установлено значение window (по умолчанию). Когда wmode был прозрачным, событие не было поймано. Вы устанавливаете wmode во встроенном html-файле, в который вы помещаете свое flash-приложение. Пример:

<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

...

0 голосов
/ 01 октября 2008

Это будет работать для определения того, когда окна Flex теряют фокус, но для определения, когда окно восстанавливает фокус, без необходимости фактически нажимать на приложение 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. Когда я просматриваю источник, код там. Кто-нибудь знает почему ??

Спасибо, Annie

...