Frage

mit früheren Versionen von Blitz, Eingabe des Vollbild-Modus erhöht, um die Höhe und die Breite der Bühne auf die Abmessungen des Bildschirms. Nun, da Hardware-Skalierung angekommen ist, die Höhe und Breite sind auf die Abmessungen des Videos festgelegt (plus Grenzen, wenn das Seitenverhältnis ist anders).

Das ist in Ordnung, es sei denn, Sie Steuerelemente über das Video gelegt haben. Vorher konnte man ihre Größe steuern; aber jetzt sind sie von der gleichen Größenordnung wie das Video geblasen und schrecklich Pixel unterteilt. Die Kontrollen sind hässlich und Untertitel sind nicht lesbar.

Es ist möglich, dass der Anwender Hardware-Skalierung auszuschalten, aber alles, was ist erreicht Anti-Aliasing auszuschalten. Die Kontrollen werden an Hässlichkeit noch die Luft gesprengt.

Gibt es eine Möglichkeit, die alte Skalierungsverhalten zurück?

War es hilfreich?

Lösung 2

Ich habe festgestellt, schließlich die Antwort auf diese. Das Problem ist, dass die FLVPlayback-Komponente nun die stage.fullScreenSourceRect Eigenschaft unter Verwendung eines Hardware-skalierten Vollbild-Modus zu gelangen. Wenn es das tut, es reicht den gerenderte Bereich von stage.fullScreenSourceRect gegeben um den Bildschirm zu füllen, anstatt die Größe der Bühne oder irgendwelche Komponenten zu erhöhen.

Um es zu stoppen, müssen Sie eine Unterklasse von FLVPlayback erstellen, die eine Unterklasse von UIManager verwendet und die Funktion außer Kraft setzen, die stage.fullScreenSourceRect Vertonung. Auf der anderen Seite, verlieren Sie Hardware-Skalierung; aber auf der Seite oben, Ihr Spieler sieht nicht wie es von einem drei Jahre alten in Kreiden gezeichnet worden ist.

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

Wir fügen den FLVPlayback unseren Film mit Actionscript, so müssen wir nur ersetzen

var myFLVPLayback:FLVPlayback = new FLVPlayback();

mit

var myFLVPLayback:CustomFLVPlayback = new CustomFLVPlayback();

Ich weiß nicht, ob es eine Möglichkeit gibt, die benutzerdefinierte Klasse in der Komponentenbibliothek zu machen.

Andere Tipps

Hier ist eine andere Art und Weise zu lösen, die einfacher ist und es scheint für mich ganz gut zu funktionieren.

myFLVPlayback.fullScreenTakeOver = false;

Die fullScreenTakeOver Eigenschaft wurde in Flash Player 9 Update eingeführt 3 . Die Dokumente sind alle ein bisschen vage, aber es ist ein bisschen mehr Infos hier:

Mit der FLVPlayback Komponente mit 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;
}

Oder und ich bin mir nicht ganz sicher über diese, könnten Sie versuchen, einig 9 Stück zu tun, auf dem FLVPlayback Skalierung, aber ich weiß nicht, ob das wird funktionieren.

9-Slice-Skalierung Tutorial: http://www.sephiroth.it/tutorials/ flashPHP / scale9 /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top