Posso ottenere il vecchio ridimensionamento a schermo intero con FLVPlayback e Flash 9.0.115+?

StackOverflow https://stackoverflow.com/questions/102059

Domanda

Con le versioni precedenti di flash, l'accesso alla modalità a schermo intero aumentava l'altezza e la larghezza del palco alle dimensioni dello schermo. Ora che è arrivato il ridimensionamento dell'hardware, l'altezza e la larghezza sono impostate sulle dimensioni del video (più i bordi se le proporzioni sono diverse).

Va ??bene, a meno che tu non abbia controlli posizionati sul video. Prima, potevi controllarne le dimensioni; ma ora sono fatti saltare in aria dalla stessa scala del video e pixelati orribilmente. I controlli sono brutti e i sottotitoli sono illeggibili.

È possibile per l'utente disattivare il ridimensionamento dell'hardware, ma tutto ciò che si ottiene è disattivare l'antialiasing. I controlli sono ancora fatti saltare in aria.

C'è un modo per ripristinare il vecchio comportamento di ridimensionamento?

È stato utile?

Soluzione 2

Alla fine ho trovato la risposta a questo. Il problema è che il componente FLVPlayback ora utilizza la proprietà stage.fullScreenSourceRect per accedere a una modalità a schermo intero con scalabilità hardware. Quando lo fa, estende l'area di rendering fornita da stage.fullScreenSourceRect per riempire lo schermo, anziché aumentare le dimensioni dello stage o di qualsiasi componente.

Per interromperlo, è necessario creare una sottoclasse di FLVPlayback che utilizza una sottoclasse di UIManager e sovrascrivere la funzione che imposta stage.fullScreenSourceRect. Sul lato negativo, si perde il ridimensionamento dell'hardware; ma il lato positivo non sembra che il tuo giocatore sia stato disegnato da un pastore di tre anni.

CustomFLVPlayback.as:

import fl.video.*;
use namespace flvplayback_internal;

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

CustomUIManager.as:

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

Aggiungiamo FLVPlayback al nostro filmato usando ActionScript, quindi non ci resta che sostituirlo

var myFLVPLayback:FLVPlayback = new FLVPlayback();

con

var myFLVPLayback:CustomFLVPlayback = new CustomFLVPlayback();

Non so se esiste un modo per rendere disponibile la classe personalizzata nella libreria dei componenti.

Altri suggerimenti

Ecco un altro modo per risolverlo, che è più semplice e sembra funzionare abbastanza bene per me.

myFLVPlayback.fullScreenTakeOver = false;

La proprietà fullScreenTakeOver è stata introdotta in Flash Player 9 aggiornamento 3 . I documenti sono tutti un po 'vaghi, ma qui sono disponibili ulteriori informazioni:

Uso del componente FLVPlayback con Flash Player 9 Aggiornamento 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;
}

Oppure, e non ne sono del tutto sicuro, potresti provare a fare un ridimensionamento di 9 slice su FLVPlayback, ma non so se funzionerà.

Tutorial sul ridimensionamento a 9 sezioni: http://www.sephiroth.it/tutorials/ flashPHP / scale9 /

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