Frage

Ich möchte eine Vollbild-Schaltfläche entfernen, wenn die allowfullscreen param falsch ist.
param value="true" name="allowfullscreen"

Hat jemand wissen, ob ihre möglich, diesen Wert zu erkennen? Es kommt nicht mit anderen flashvars auf loaderInfo.parameters.

War es hilfreich?

Lösung

EDIT: Das ist jetzt überholt (war ein Hack für FP 8.5 / 9)

Im Folgenden wird erkennen, ob Ihr Player Vollbild-Verfügbarkeit (thx @mrdoob) hat:

var hasFullscreen:Boolean = (stage.hasOwnProperty("displayState"))

Andere Tipps

Das Element Sie wollen, ist

stage.displayState

Es kann wie so zugewiesen werden:

import flash.display.StageDisplayState;

....

stage.displayState = StageDisplayState.FULL_SCREEN;
stage.displayState = StageDisplayState.NORMAL;

Ich empfehle Lesung:

http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000352.html

[Edit:

Oh Mann, völlig falsch verstehen Ihre Frage.]

Nach einem kleinen Test sieht es aus wie Sie nur den Ausnahmemechanismus für sie ohne wahrnehmbare Flimmern testen können:

try
{
    stage.displayState = StageDisplayState.FULL_SCREEN;
    stage.displayState = StageDisplayState.NORMAL;
} catch ( error:SecurityError ) {
// your hide button code            
}

LÖSUNG FÜR AS3

Sie können prüfen, ob Vollbild über die Bühne Eigenschaften erlaubt ist, beispielsweise für meinen Fall

try {
    if (btn.stage["allowsFullScreen"]) { // if this fails, then its not allowed
        // do full screen allow code here
        btn.alpha = 1; // show since its allowed
    }
} catch (error:Error) { // full scrren not allowed
    btn.alpha = 0.5; // dim since it cant be used
}

Sie können nicht erkennen, ob der embed die allowfullscreen auf false / true gesetzt hat.

Leider müssen Sie warten, bis der Benutzer klickt auf der Schaltfläche die eventuellen Fehler zu fangen und damit die Taste deaktivieren.

Still ... Sie müssen in einem ganz besonderen Rahmen bewerten Flashplayer diesen Wert selbst als erforderlich Sie es wahrscheinlich bearbeitet. Falls die Einbettung von einem Dritt behandelt, ob der Vollbild-Modus erlaubt werden, um entscheiden zu können, muss oder nicht. Wenn dies der Fall ist, fügen Sie einfach einen zusätzlichen Flash-var (z Fullscreen = false).

Eigentlich sind die docs unklar, wie Vollbildmodus erlaubt ist oder nicht, kann in Actionscript 3 erfasst werden.

Das einzige, was sie erwähnen ist, dass, wenn Sie in den Vollbildmodus zu wechseln versuchen, und es ist nicht erlaubt, dann werden Sie eine Ausnahme erhalten, die Sie fangen können. Das wird nicht leicht ermöglicht es Ihnen, eine Vollbild-Modus-Taste ein- oder ausblenden.

Es kann ein Weg sein, aber die „LiveDocs“ ist notorisch unvollständig oder kurz.

könnten Sie in der Lage sein, die "Vollbild" param der Wert, der standardmäßig auf false zu lesen, indem Sie auf das Root-Objekts paramters mit:

var keyStr:String;
var valueStr:String;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
for (keyStr in paramObj) {
valueStr = String(paramObj[keyStr]);
//do something with this information
}

Edit:. Sie stellte fest, dass es nicht in dem flashvars kommt zurück

Die einzige Methode, die ich denken kann, wäre eine JavaScript-Funktion über ExternalInterface zu rufen. Sie können ganz einfach die Flash einbetten Parameter von JavaScript lesen, aber ich denke, wenn Sie eine JS in die HTML Ihr Film eingebettet einfügen könnten, Sie lieber geändert, um die Parameter haben würden, als versuchen, um herauszufinden, was es ist.

Other than that, Jotham Lösung scheint in Ordnung, abgesehen von der Tatsache, dass stage.displayState = StageDisplayState.FULL_SCREEN; kann nur durch ein Benutzerereignis ausgelöst werden.

  

Der Vollbildmodus wird als Reaktion auf einen Mausklick oder Tastendruck durch den Nutzer; der Film kann Stage.displayState nicht ohne Benutzereingabe ändern. ( http://help.adobe.com /en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState )

Sie sollten eine zweite Taste haben, dass, wenn sie gedrückt, Jotham der Code ausgeführt wird. Ich würde für eine Login-Button gehen oder eine andere Taste der Benutzer ohnehin drücken würden.

Leider ist die oben Post nicht funktioniert. Eine swf mit:

package {
    import flash.display.Sprite;
    import flash.display.StageDisplayState;
    import flash.events.Event;
    import flash.events.MouseEvent;

    public class Tester extends Sprite {
        public function Tester() {
            trace("Display States: Full="+StageDisplayState.FULL_SCREEN+"; Normal="+StageDisplayState.NORMAL);
            trace( "- Display State? "+stage.displayState);
            trace( "- Full Screen Enabled? "+(stage.hasOwnProperty("displayState")) );
            stage.addEventListener( MouseEvent.CLICK, function(evt:Event=null):void {
                trace("Attempting to change to FullScreen...");
                try {
                    stage.displayState = StageDisplayState.FULL_SCREEN;
                    trace("Success!");
                    stage.displayState = StageDisplayState.NORMAL;
                } catch(e:*) {
                    trace("Fail! "+e);
                }
            });
        }

    }
}

Wird verfolgen, wenn Fullscreen ist deaktiviert:

Display States: Full=fullScreen; Normal=normal
- Display State? normal
- Full Screen Enabled? true
Attempting to change to FullScreen...
Fail! SecurityError: Error #2152: Full screen mode is not allowed.

Das Problem ist das Full Screen Enabled? true Teil.

Ich glaube, dass wir diese Fähigkeit mit dem Versuch des

hören überprüfen könnten
_root.stage.addEventListener(FullScreenEvent.FULL_SCREEN, onFullScreenListenter);

Von meinem Test zu versuchen, für den Vollbildmodus in engem Sicherheits Set Host zu ermöglichen, wird es null Ausnahme zurück. Ich denke, wegen Fullscreen ist nicht vorhanden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top