4

以前のバージョンの Flash では、全画面表示モードに入ると、ステージの高さと幅が画面の寸法まで拡大されました。ハードウェア スケーリングが実現したので、高さと幅はビデオの寸法に設定されます (アスペクト比が異なる場合は境界線も追加されます)。

ビデオの上にコントロールを配置していない限り、それで問題ありません。以前は、サイズを制御できました。しかし今では、ビデオと同じスケールで拡大され、恐ろしくピクセル化されています。コントロールは醜く、字幕は読めません。

ユーザーがハードウェア スケーリングをオフにすることは可能ですが、実現できるのはアンチエイリアシングをオフにすることだけです。コントロールはまだ醜いほど爆破されています。

古いスケーリング動作を取り戻す方法はありますか?

4

3 に答える 3

2

これを解決する別の方法があります。これはより簡単で、私にとっては非常にうまくいくようです。

myFLVPlayback.fullScreenTakeOver = false;

このfullScreenTakeOverプロパティは、Flash Player 9 update 3で導入されました。ドキュメントはすべて少しあいまいですが、ここにもう少し情報があります:

FLVPlaybackFlash Player 9 Update 3 でのコンポーネントの使用

于 2008-10-10T02:45:37.023 に答える
1

私は最終的にこれに対する答えを見つけました。問題は、FLVPlayback コンポーネントが stage.fullScreenSourceRect プロパティを使用して、ハードウェア スケールの全画面表示モードに入ることです。その際、ステージやコンポーネントのサイズを大きくするのではなく、stage.fullScreenSourceRect で指定されたレンダリング領域を画面いっぱいに広げます。

それを止めるには、UIManager のサブクラスを使用する FLVPlayback のサブクラスを作成し、stage.fullScreenSourceRect を設定する関数をオーバーライドする必要があります。欠点として、ハードウェアのスケーリングが失われます。しかし良い面として、プレーヤーは 3 歳児がクレヨンで描いたようには見えません。

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

actionscript を使用して FLVPlayback をムービーに追加するので、置き換えるだけです。

var myFLVPLayback:FLVPlayback = new FLVPlayback();

var myFLVPLayback:CustomFLVPlayback = new CustomFLVPlayback();

カスタム クラスをコンポーネント ライブラリで使用できるようにする方法があるかどうかはわかりません。

于 2008-09-22T08:41:03.220 に答える
-1
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;
}

または、これについてはよくわかりませんが、FLVPlayback で 9 スライスのスケーリングを試みることもできますが、それが機能するかどうかはわかりません。

9 スライス スケーリングのチュートリアル: http://www.sephiroth.it/tutorials/flashPHP/scale9/

于 2008-09-20T01:09:40.793 に答える