Pregunta

Me gustaría eliminar un botón de pantalla completa si el parámetro allowfullscreen es falso.
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; valor de parámetro = " verdadero " name = " allowfullscreen "

¿Alguien sabe si es posible detectar ese valor? No viene con otros flashvars en loaderInfo.parameters.

¿Fue útil?

Solución

EDITAR: Esto está obsoleto ahora (era un truco para FP 8.5 / 9)

Lo siguiente detectará si su reproductor tiene disponibilidad de pantalla completa (thx @mrdoob):

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

Otros consejos

El miembro que desea es

stage.displayState

Puede asignarse así:

import flash.display.StageDisplayState;

....

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

Recomiendo leer:

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

[Editar:

Oh, hombre, entendí mal tu pregunta.]

Después de una pequeña prueba, parece que puede usar el mecanismo de excepción para probarlo sin ningún parpadeo perceptible:

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

SOLUCIÓN PARA AS3

puede verificar si se permite la pantalla completa a través de las propiedades del escenario, ejemplo para mi 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
}

No puede detectar si la incrustación tiene la pantalla allowfullscreen establecida en false / true.

Lamentablemente, tendrá que esperar hasta que el usuario haga clic en el botón para detectar el posible error y, por lo tanto, deshabilitar el botón.

Aún así ... Debe estar en un contexto muy especial para requerir que flashplayer evalúe este valor en sí mismo ya que usted probablemente lo editó. En caso de que la inserción sea manejada por un tercero que deba poder decidir si se debe permitir o no el modo de pantalla completa. Si este es el caso, simplemente agregue un flash-var adicional (por ejemplo, fullscreenButton = false).

En realidad, los documentos no tienen claro cómo se puede detectar o no el modo de pantalla completa en ActionScript 3.

Lo único que mencionan es que si intentas cambiar al modo de pantalla completa y no está permitido, obtendrás una excepción, que puedes detectar. Esto no le permitirá ocultar o mostrar fácilmente un botón de modo de pantalla completa.

Puede haber una forma, pero los "livedocs" son notoriamente incompletos o breves.

Es posible que pueda leer el " pantalla completa " El valor de param que por defecto es falso mirando los parámetros del objeto raíz 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
}

Editar: notó que no vuelve en los flashvars.

El único método que se me ocurre sería llamar a una función de JavaScript a través de ExternalInterface. Puede leer fácilmente los parámetros de inserción flash de JavaScript, pero creo que si pudiera insertar un JS en el HTML en el que está incrustada su película, preferiría cambiar el parámetro que intentar averiguar qué es.

Aparte de eso, la solución de Jotham parece estar bien, aparte del hecho de que stage.displayState = StageDisplayState.FULL_SCREEN; solo puede ser activado por un evento de usuario.

  

El modo de pantalla completa se inicia en respuesta a un clic del mouse o al presionar una tecla por el usuario; la película no puede cambiar Stage.displayState sin la intervención del usuario. ( http://help.adobe.com /en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState )

Debería tener un segundo botón que, cuando se presiona, ejecuta el código de Jotham. Iría por un botón de inicio de sesión o cualquier otro botón que el usuario presionaría de todos modos.

Lamentablemente, la publicación anterior no funciona. Un 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);
                }
            });
        }

    }
}

Realizará un seguimiento cuando se desactive FullScreen:

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.

¿El problema es Full Screen Enabled? verdadero parte.

Creo que podríamos comprobar esta capacidad con el intento de escuchar el

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

Desde mi prueba al intentar permitir el modo de pantalla completa en un host de conjunto de seguridad estricto, devolverá una excepción nula. Supongo que debido a FullScreenEvent no existe.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top