Trabajo con el modo de pantalla completa

El modo de pantalla completa permite establecer un escenario de película para rellenar el monitor completo de un espectador sin ningún borde de contenedor o menú. La propiedad displayState de la clase Stage se utiliza para activar y desactivar el modo de pantalla completa para un archivo SWF. La propiedad displayState puede establecerse en uno de los valores definidos por las constantes de la clase flash.display.StageDisplayState. Para activar el modo de pantalla completa, debe establecerse la propiedad displayState en StageDisplayState.FULL_SCREEN:

stage.displayState = StageDisplayState.FULL_SCREEN; 

En Flash Player, el modo de pantalla completa sólo puede iniciarse a través de ActionScript como respuesta a un clic del ratón (incluido el clic con el botón derecho) o una pulsación de tecla. El contenido de AIR que se ejecuta en el entorno limitado de seguridad de la aplicación no requiere que se indique el modo de pantalla completa como respuesta a un gesto del usuario.

Para salir del modo de pantalla completa, debe establecerse la propiedad displayState en StageDisplayState.NORMAL.

stage.displayState = StageDisplayState.NORMAL; 

Asimismo, el usuario puede optar por salir del modo de pantalla completa cambiando a una ventana diferente o utilizando una de las distintas combinaciones de teclas: tecla Esc (todas las plataformas), Control-W (Windows), Comando-W (Mac) o Alt-F4 (Windows).

Activación del modo de pantalla completa en Flash Player

Para activar el modo de pantalla completa en un archivo SWF incorporado en una página HTML, el código HTML para incorporar Flash Player debe incluir una etiqueta param y un atributo embed con el nombre allowFullScreen y el valor true, como en el siguiente código:

<object> 
    ... 
    <param name="allowFullScreen" value="true" /> 
    <embed ... allowfullscreen="true" /> 
</object>

En la herramienta de edición de Flash, seleccione Archivo -> Configuración de publicación y en el cuadro de diálogo Configuración de publicación, en la ficha HTML, seleccione la plantilla Sólo Flash - Permitir pantalla completa.

En Flex, asegúrese de que la plantilla HTML incluya las etiquetas <object> y <embed> que son compatibles con la pantalla completa.

Si se utiliza JavaScript en una página Web para generar las etiquetas de incorporación de SWF, se debe modificar JavaScript para añadir el atributo/etiqueta de parámetro allowFullScreen. Por ejemplo, si la página HTML utiliza la función AC_FL_RunContent() (que se usa en páginas HTML generadas tanto en Flex Builder como en Flash), se debe añadir el parámetro allowFullScreen a dicha llamada de función, del siguiente modo:

AC_FL_RunContent( 
    ... 
    'allowFullScreen','true', 
    ... 
    ); //end AC code

Esto no se aplica a los archivos SWF que se ejecutan en el reproductor Flash Player autónomo.

Nota: si el modo de ventana (wmode en HTML) se establece en Opaco sin ventanas (opaco) o Transparente sin ventanas (transparente), la ventana de pantalla completa siempre es opaca.

También existen limitaciones relacionadas con la seguridad al utilizar el modo de pantalla completa de Flash Player en un navegador. Estas limitaciones se describen en el capítulo Seguridad de Flash Player.

Escala y tamaño del escenario en pantalla completa

Las propiedades Stage.fullScreenHeight y Stage.fullScreenWidth devuelven la altura y la anchura del monitor que se utiliza cuando se pasa al tamaño de pantalla completa, si ese estado se introduce de forma inmediata. Estos valores pueden ser incorrectos si el usuario tiene la oportunidad de mover el navegador de un monitor a otro después de recuperar estos valores pero antes de pasar al modo de pantalla completa. Si se recuperan estos valores en el mismo controlador de eventos en el que se estableció la propiedad Stage.displayState como StageDisplayState.FULL_SCREEN, los valores son correctos. Para usuarios de varios monitores, el contenido de SWF sólo se expandirá para llenar un monitor. Flash Player y AIR usan una métrica para determinar el monitor que contiene la mayor parte del archivo SWF y utiliza dicho monitor en el modo de pantalla completa. Las propiedades fullScreenHeight y fullScreenWidth sólo reflejan el tamaño del monitor utilizado para el modo de pantalla completa. Para obtener más información, consulte Stage.fullScreenHeight y Stage.fullScreenWidth en el manual Referencia del lenguaje y componentes ActionScript 3.0.

El comportamiento de ajuste de escala del escenario en el modo de pantalla completa es el mismo que en el modo normal; el ajuste de escala se controla con la propiedad scaleMode de la clase Stage. Si la propiedad scaleMode se establece en StageScaleMode.NO_SCALE, las propiedades stageWidth y stageHeight de Stage cambian para reflejar el tamaño del área de la pantalla ocupada por el archivo SWF (toda la pantalla en este caso); si se visualiza en el navegador, el parámetro HTML controla la configuración.

Se puede utilizar el evento fullScreen de la clase Stage para detectar cuándo se activa y desactiva el modo de pantalla completa, y para responder ante ello. Por ejemplo, puede ser que se desee volver a colocar, añadir o quitar elementos de la pantalla al activar o desactivar el modo de pantalla completa, como en el ejemplo:

import flash.events.FullScreenEvent; 
 
function fullScreenRedraw(event:FullScreenEvent):void 
{ 
    if (event.fullScreen) 
    { 
        // Remove input text fields. 
        // Add a button that closes full-screen mode. 
    } 
    else 
    { 
        // Re-add input text fields. 
        // Remove the button that closes full-screen mode. 
    } 
} 
 
mySprite.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenRedraw);

Tal y como se muestra en este código, el objeto del evento fullScreen es una instancia de la clase flash.events.FullScreenEvent, que incluye una propiedad fullScreen que indica si el modo de pantalla completa está activado (true) o no (false).

Compatibilidad con el teclado en modo de pantalla completa

Cuando Flash Player se ejecuta en un navegador, todo el código ActionScript relacionado con el teclado, como los eventos de teclado y la introducción de texto en instancias de TextField, se desactiva en modo de pantalla completa. Las excepciones (teclas que permanecen activadas) son:

  • Determinadas teclas que no afectan a la impresión, como las teclas de flecha, la barra espaciadora o el tabulador

  • Métodos abreviados de teclado que cierran el modo de pantalla completa: Esc (Windows y Mac), Control-W (Windows), Comando-W (Mac) y Alt-F4

Estas restricciones no se aplican a contenido de SWF ejecutado en el reproductor autónomo de Flash Player o en AIR. AIR admite un modo interactivo de pantalla completa que permite la entrada del teclado.

Escala de hardware en modo de pantalla completa

La propiedad fullScreenSourceRect de la clase Stage se puede utilizar para establecer que Flash Player o AIR escalen una región específica del escenario al modo de pantalla completa. La escala de hardware en Flash Player y AIR, en caso de estar disponible, se activa en la tarjeta gráfica y de vídeo del equipo y suele mostrar el contenido con mayor rapidez que la escala de software.

Para aprovechar la escala de hardware, debe establecer todo el escenario o parte del mismo en modo de pantalla completa. El siguiente código ActionScript 3.0 establece todo el escenario en modo de pantalla completa:

import flash.geom.*;  
{ 
    stage.fullScreenSourceRect = new Rectangle(0,0,320,240); 
    stage.displayState = StageDisplayState.FULL_SCREEN; 
}

Cuando esta propiedad se establece en un rectángulo válido y la propiedad displayState se define en modo de pantalla completa, Flash Player y AIR aplican escala al área especificada. El tamaño real del escenario expresado en píxeles dentro de ActionScript no cambia. Flash Player y AIR aplican un límite mínimo para el tamaño del rectángulo de modo que se ajuste al mensaje estándar “Press Esc to exit full-screen mode” (Presione Esc para salir del modo de pantalla completa). Este límite suele ser de 260 x 30 píxeles, pero puede variar según la plataforma y la versión de Flash Player.

La propiedad fullScreenSourceRect sólo se puede definir cuando Flash Player o AIR no estén en modo de pantalla completa. Para utilizar esta propiedad correctamente, primero debe establecerse y, seguidamente, definir la propiedad displayState en modo de pantalla completa.

Para activar la escala, establezca la propiedad fullScreenSourceRect en un objeto rectangle.

stage.fullScreenSourceRect = new Rectangle(0,0,320,240);

Para desactivar la escala, establezca la propiedad fullScreenSourceRect en null.

stage.fullScreenSourceRect = null;

Para aprovechar íntegramente las funciones de aceleración de hardware con Flash Player, actívela mediante el cuadro de diálogo Configuración de Flash Player. Para cargar el cuadro de diálogo, haga clic con el botón derecho del ratón (Windows) o presione Control y haga clic (Mac) dentro del contenido de Flash Player en el navegador. Seleccione la ficha Visualización, que es la primera ficha, y active la casilla de verificación: Activar aceleración de hardware.

Modos de ventana directo y de composición con GPU

Flash Player 10 introduce dos modos de ventana, directo y composición por GPU, que se pueden habilitar desde la configuración de publicación de la herramienta de edición de Flash. Estos modos no se admiten en AIR. Para poder utilizar estos modos, es preciso activar la aceleración de hardware para Flash Player.

El modo directo utiliza la ruta más rápida y directa para introducir gráficos en pantalla, lo que resulta apropiado para la reproducción de vídeo.

La composición con GPU utiliza la unidad de procesamiento de gráficos de la tarjeta de vídeo para acelerar la composición. La composición de vídeo es el proceso de organización en capas de varias imágenes para crear una sola imagen de vídeo. Cuando la composición se acelera con la GPU, es posible mejorar el rendimiento de la conversión YUV, la corrección de color, la rotación o la escala, así como la fusión. La conversión YUV hace referencia a la conversión de color de las señales analógicas del compuesto, que se utilizan para la transmisión, en el modelo de color RGB (rojo, verde, azul) que utilizan las pantallas y las cámaras de vídeo. El uso de la GPU para acelerar la composición reduce la demanda del equipo y la memoria que se aplica a la CPU. También supone una reproducción más suavizada para el vídeo de definición estándar.

Sea cuidadoso al implementar estos modos de ventana. El uso de la composición con GPU puede resultar costoso en términos de recursos de CPU y memoria. Si algunas operaciones (por ejemplo, modos de fusión, recorte o enmascaramiento) no se pueden llevar a cabo en la GPU, se realizan mediante el software. Adobe recomienda la limitación a un archivo SWF por página HTML cuando se utilicen estos modos, que no deben se habilitar para banners. La función Probar película de Flash no utiliza la aceleración de hardware, pero puede emplearla mediante la opción Vista previa de publicación.

La definición de una velocidad de fotogramas en el archivo SWF que sea superior a 60, velocidad máxima de actualización de pantalla, no resulta útil. El establecimiento de la velocidad de fotogramas de 50 a 55 permite fotogramas eliminados, lo cual puede suceder por distintos motivos en algunas ocasiones.

Para poder utilizar el modo directo, es preciso disponer de Microsoft DirectX 9 con VRAM de 128 MB en Windows y OpenGL para Apple Macintosh, Mac OS X v10.2 o versiones posteriores. El modo de composición por GPU requiere compatibilidad con Microsoft DirectX 9 y Pixel Shader 2.0 en Windows con 128 MB de VRAM. En Mac OS X y Linux, la composición por GPU requiere OpenGL 1.5 y diversas extensiones de OpenGL (objeto framebuffer, objetos multitexture y shader, lenguaje de sombreado y sombreados de fragmentos).

Puede activar los modos de aceleración directo y gpu por archivo SWF mediante el cuadro de diálogo de configuración de publicación de Flash, utilizando el menú de aceleración de hardware de la ficha Flash. Si selecciona Ninguno, el modo de ventana vuelve a los valores predeterminado, transparente u opaco, tal y como se especifica en la configuración del modo de ventana en la ficha HTML.