3 Stimmen

showSettings-Rückruf in Flex?

Ich bin ein ziemlicher Neuling in Sachen Flex, also verzeihen Sie mir, wenn dies eine offensichtliche Frage ist.

Gibt es eine Möglichkeit, die Security.showSettings (flash.system.Security) mit einem Callback zu öffnen? oder zumindest zu erkennen, ob sie gerade geöffnet ist oder nicht?

Meine Flex-Anwendung wird für das Streaming von Audio verwendet, und wird normalerweise durch Javascript gesteuert, so dass ich es für den normalen Gebrauch (über absolute Positionierung es aus der Seite) versteckt halten.

Wenn ich auf das Mikrofon zugreifen möchte, muss ich den Dialog für die Blitzeinstellungen sichtbar machen, was problemlos funktioniert.

Wenn der Benutzer sie schließt, muss ich sie wieder vom Bildschirm entfernen, damit er nicht eine leere Flex-App sieht, nachdem er seine Einstellungen geändert hat.

danke :)

2voto

Wesley Petrowski Punkte 1131

Wenn Sie so vorgehen, wird es in einigen Situationen funktionieren:

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

Wenn Sie nur versuchen, das Mikrofon zu verwenden und sich darauf verlassen, dass Flash das Dialogfeld öffnet, um den Benutzer um Erlaubnis zu fragen, öffnet Flash ein Dialogfeld mit zwei Schaltflächen, Zulassen und Verweigern. Wenn der Benutzer auf eine der Schaltflächen klickt, wird das StatusEvent ausgelöst, das Dialogfeld wird geschlossen, und Sie können die Flex-App aus dem Weg räumen.

Wenn Sie das Einstellungsfeld manuell öffnen (über Security.showSettings ), erhalten Sie das Panel mit Allow und Deny Optionsfelder und das Ereignis wird ausgelöst, wenn der Benutzer auf die Optionsschaltflächen klickt, und nicht, wenn er das Panel schließt, was für Sie wahrscheinlich weniger hilfreich ist.

1voto

Jiaaro Punkte 70598

Update : flex 4 Lösung

Als ich auf Flex 4 umgestiegen bin und angefangen habe, mein mxml mit Adobes Open-Source-Compiler mxmlc zu kompilieren, hat die unten stehende Lösung nicht mehr funktioniert, weil die Benachrichtigung nicht mehr den Fokus verliert, wenn man in den Einstellungen ist.

Soweit ich das beurteilen kann, musste ich zu einer weniger eleganten Lösung übergehen, bei der der Benutzer jedes Mal, wenn er mit den Einstellungen fertig ist, auf "OK" in der Warnbox klicken muss.

Hier ist der neue Code:

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

    });
}

OLD: (flex 3) Ich habe das zum Laufen gebracht...

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();
}

Die erste Sache in der init()-Funktion ausgeführt wird... das einzige Problem ist (wie Wesley sagte), das focusOut-Ereignis tritt auf, wenn die Flex-App selbst den Fokus auch verliert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X