Pregunta

Con las versiones anteriores de flash, entrar en el modo de pantalla completa, el aumento de la altura y la anchura de la etapa de las dimensiones de la pantalla.Ahora que la escala de hardware ha llegado, la altura y el ancho establecido para las dimensiones del vídeo (además de las fronteras si la relación de aspecto es diferente).

Eso está bien, a menos que usted tiene los controles que se coloca sobre el vídeo.Antes, usted puede controlar su tamaño;pero ahora son destruidas por la misma escala que la de vídeo, y pixelada horriblemente.Los controles son feos y los subtítulos son ilegibles.

Es posible que el usuario apague la escala de hardware, pero lo único que logra es para desactivar el anti-aliasing.Los controles son aún soplado hasta la fealdad.

Es allí una manera de conseguir la antigua escala de comportamiento de la espalda?

¿Fue útil?

Solución 2

Yo finalmente he encontrado la respuesta a este.El problema es que el componente FLVPlayback es que ahora con el escenario.fullScreenSourceRect propiedad para entrar en un hardware a escala del modo de pantalla completa.Cuando se hace eso, se extiende la representación de área dada por el escenario.fullScreenSourceRect para llenar la pantalla, en lugar de aumentar el tamaño de la etapa o a cualquiera de los componentes.

Para detener esto, usted tiene que crear una subclase de FLVPlayback que utiliza una subclase de la clase UIManager, y reemplazar la función que la configuración de la etapa.fullScreenSourceRect.Por el lado de abajo, se pierde la escala de hardware;pero en el lado positivo, su jugador no parece que ha sido dibujado por un período de tres años, en los lápices de colores.

CustomFLVPlayback.como:

import fl.video.*;
use namespace flvplayback_internal;

public class CustomFLVPlayback
{
    public function CustomFLVPlayback()
    {
        super();
        uiMgr = new CustomUIManager(this);
    }
}

CustomUIManager.como:

import fl.video.*;
import flash.display.StageDisplayState;

public class CustomUIManager
{
    public function CustomUIManager(vc:FLVPlayback)
    {
        super(vc);
    }

    public override function enterFullScreenDisplayState():void
    {
        if (!_fullScreen && _vc.stage != null)
        {
            try
            {
                 _vc.stage.displayState = StageDisplayState.FULL_SCREEN;
            } catch (se:SecurityError) {
            }
        }
    }
}

Añadimos el componente FLVPlayback para nuestra película con actionscript, así que sólo tenemos que sustituir

var myFLVPLayback:FLVPlayback = new FLVPlayback();

con

var myFLVPLayback:CustomFLVPlayback = new CustomFLVPlayback();

No sé si hay una manera de hacer que la clase personalizada disponible en la biblioteca de componentes.

Otros consejos

He aquí otra forma de resolverlo, que es simple y parece que funciona bastante bien para mí.

myFLVPlayback.fullScreenTakeOver = false;

El fullScreenTakeOver la propiedad se introdujo en Flash Player 9 actualización 3.Los documentos son todos un poco vaga, pero hay un poco más de información aquí:

El uso de la FLVPlayback componente de Flash Player 9 Update 3

stage.align     = StageAlign.TOP_LEFT; 
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, onStageResize);

function onStageResize(event:Event):void {
    //do whatever you want to re-position your controls and scale the video
    // here's an example
    myFLVPlayback.width = stage.stageWidth;
    myFLVPlayback.height = stage.stageHeight - controls.height;
    controls.y = stage.stageHeight - controls.height;
}

O, y no estoy del todo seguro acerca de esto, usted podría tratar de hacer algo de 9 rebanada de escala en el componente FLVPlayback, pero no sé si eso va a funcionar.

La escala de 9 divisiones tutorial: http://www.sephiroth.it/tutorials/flashPHP/scale9/

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