showSettings обратный вызов во Flex? - PullRequest
3 голосов
/ 24 марта 2010

Я довольно новичок, чтобы изгибать, так что простите, если это очевидный вопрос.

Есть ли способ открыть Security.showSettings (flash.system.Security) с обратным вызовом? или хотя бы определить, открыт ли он в данный момент или нет?

Мое flex-приложение используется для потоковой передачи аудио и обычно управляется javascript, поэтому я скрываю его для обычного использования (через абсолютное позиционирование на странице).

Когда мне нужен доступ к микрофону, мне нужно сделать видимым диалоговое окно настроек вспышки, которое работает нормально, я перемещаю его в окно и открываю диалоговое окно.

Когда пользователь закрывает его, мне нужно убрать его с экрана, чтобы они не увидели пустое гибкое приложение, сидящее там после того, как они изменили свои настройки.

спасибо:)

Ответы [ 2 ]

2 голосов
/ 24 марта 2010

Если вы сделаете что-то подобное, это будет работать в некоторых ситуациях:

var mic:Microphone = Microphone.getMicrophone();
mic.addEventListener(StatusEvent.STATUS, onMicStatus);

Если вы просто пытаетесь использовать микрофон и используете Flash для вызова диалогового окна с запросом разрешения, Flash откроет диалоговое окно с двумя кнопками: «Разрешить» и «Запретить». Когда пользователь нажимает одну из кнопок, сработает StatusEvent, диалоговое окно закроется, и вы сможете убрать приложение flex с дороги.

Если вы открываете панель настроек вручную (через Security.showSettings), вы получаете панель с переключателями Allow и Deny , и событие срабатывает, когда пользователь нажимает на переключатели, а не когда они закрывают панель, что, вероятно, менее полезно для вас.

1 голос
/ 25 марта 2010

Обновление : решение flex 4

Поэтому, когда я перешел на flex 4 и начал компилировать свой mxml с помощью компилятора mobmlc с открытым исходным кодом adobe, приведенное ниже решение больше не работало, потому что предупреждение больше не теряет фокус, когда вы больше находитесь в настройках.

Насколько я могу судить, мне пришлось перейти к менее элегантному решению, где пользователь должен нажимать "ОК" в окне предупреждения каждый раз, когда он завершает настройку.

Вот новый код:

private function setup_smart_hide():void {
    // Call this function whenever you make the flex app visible (or add it
    // to a show_flex() function if you have such a thing set up)
    alert = Alert.show('Click "OK" to continue.', 'Thanks!', Alert.OK, null, function(e:CloseEvent):void {

        // calls the external javascript to hide the flex app
        hide_self();

    });
}

СТАРЫЙ: (flex 3) Получил эту работу ...

private function setup_smart_hide():void {
    alert = Alert.show('Thanks');

    alert.addEventListener(FocusEvent.FOCUS_IN, function(event:FocusEvent):void {
            // javascript to hide the flex app
        ExternalInterface.call("SB.flex.hide");
    });
    alert.addEventListener(FocusEvent.FOCUS_OUT, function(event:FocusEvent):void {
            // javascript to show the flex app
        ExternalInterface.call("SB.flex.show");
    });

    alert.setFocus();
}

Первым делом запускается функция init () ... единственная проблема (как сказал Уэсли), событие focusOut происходит, когда само приложение flex также теряет фокус.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...