Domanda

Vorrei rimuovere un pulsante a schermo intero se il parametro allowfullscreen è falso.
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; valore param = " vero " name = " allowfullscreen "

Qualcuno sa se è possibile rilevare quel valore? Non viene fornito con altre flash su loaderInfo.parameters.

È stato utile?

Soluzione

MODIFICA: ora è obsoleto (era un trucco per FP 8.5 / 9)

Quanto segue rileverà se il tuo giocatore ha la disponibilità a schermo intero (thx @mrdoob):

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

Altri suggerimenti

Il membro che desideri è

stage.displayState

Può essere assegnato in questo modo:

import flash.display.StageDisplayState;

....

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

Consiglio di leggere:

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

[Modifica:

Oh amico, hai letto male la tua domanda.]

Dopo un piccolo test sembra che puoi semplicemente usare il meccanismo delle eccezioni per testarlo senza alcun tremolio percepibile:

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

SOLUZIONE PER AS3

puoi verificare se lo schermo intero è consentito tramite le proprietà dello stage, esempio per il mio caso

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
}

Non è possibile rilevare se l'incorporamento ha lo schermo consentito impostato su false / true.

Purtroppo dovrai attendere fino a quando l'utente non fa clic sul pulsante per rilevare l'eventuale errore e quindi disabilitare il pulsante.

Ancora ... Devi essere in un contesto molto speciale per richiedere a Flashplayer di valutare questo valore come tu probabilmente lo hai modificato. Nel caso in cui l'incorporamento sia gestito da una terza parte che deve essere in grado di decidere se consentire o meno la modalità a schermo intero. In questo caso, aggiungi semplicemente un flash-var aggiuntivo (ad esempio fullscreenButton = false).

In realtà i documenti non sono chiari su come la modalità a schermo intero sia permessa o meno possa essere rilevata in ActionScript 3.

L'unica cosa che menzionano è che se provi a passare alla modalità a schermo intero e non è consentita, otterrai un'eccezione che puoi catturare. Ciò non ti consentirà facilmente di nascondere o mostrare un pulsante della modalità a schermo intero.

Potrebbe esserci un modo, ma il "quot" vissuto ". sono notoriamente incompleti o brevi.

Potresti essere in grado di leggere " a schermo intero " il valore di param che è impostato su falso guardando i parametri dell'oggetto root con:

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
}

Modifica: hai notato che non ritorna nelle flashvars.

L'unico metodo a cui riesco a pensare sarebbe quello di chiamare una funzione JavaScript tramite ExternalInterface. Puoi facilmente leggere i parametri di incorporamento flash da JavaScript, ma sto pensando che se potessi inserire un JS nell'HTML il tuo filmato è incorporato, avresti preferito cambiare il parametro piuttosto che provare a scoprire di cosa si tratta.

A parte questo, la soluzione di Jotham sembra ok, a parte il fatto che stage.displayState = StageDisplayState.FULL_SCREEN; può essere attivato solo da un evento utente.

  

La modalità a schermo intero viene avviata in risposta a un clic del mouse o alla pressione di un tasto da parte dell'utente; il film non può cambiare Stage.displayState senza l'input dell'utente. ( http://help.adobe.com /en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState )

Dovresti avere un secondo pulsante che, se premuto, esegue il codice di Jotham. Vorrei scegliere un pulsante di accesso o qualsiasi altro pulsante l'utente prema comunque.

Purtroppo, il post sopra non funziona. Una swf con:

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

    }
}

Traccia quando FullScreen è disabilitato:

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.

Il problema è il abilitato a schermo intero? vero parte.

Credo che potremmo verificare questa capacità con il tentativo di ascoltare

_root.stage.addEventListener(FullScreenEvent.FULL_SCREEN, onFullScreenListenter);

Dal mio test sul tentativo di consentire la modalità a schermo intero in un host con set di sicurezza ristretto, restituirà un'eccezione nulla. Immagino che a causa di FullScreenEvent non esista.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top