我可以使用FLVPlayback和flash 9.0.115+;获得旧的全屏缩放吗;?

我可以使用FLVPlayback和flash 9.0.115+;获得旧的全屏缩放吗;?,flash,video,flv,fullscreen,scaling,Flash,Video,Flv,Fullscreen,Scaling,对于以前版本的flash,进入全屏模式会将舞台的高度和宽度增加到屏幕尺寸。现在硬件缩放已经到来,高度和宽度被设置为视频的尺寸(如果纵横比不同,则加上边框) 那很好,除非你在视频上放置了控件。以前,你可以控制它们的大小;但现在它们被放大到和视频一样的规模,像素化非常可怕。控件难看,字幕不可读 用户可以关闭硬件缩放,但实现的只是关闭抗锯齿。控制装置仍被炸得丑陋不堪 有没有办法让旧的缩放行为回归 stage.align = StageAlign.TOP_LEFT; stage.scaleMo

对于以前版本的flash,进入全屏模式会将舞台的高度和宽度增加到屏幕尺寸。现在硬件缩放已经到来,高度和宽度被设置为视频的尺寸(如果纵横比不同,则加上边框)

那很好,除非你在视频上放置了控件。以前,你可以控制它们的大小;但现在它们被放大到和视频一样的规模,像素化非常可怕。控件难看,字幕不可读

用户可以关闭硬件缩放,但实现的只是关闭抗锯齿。控制装置仍被炸得丑陋不堪

有没有办法让旧的缩放行为回归

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层缩放教程:

我终于找到了答案。问题在于FLVPlayback组件现在使用stage.fullScreenSourceRect属性进入硬件缩放的全屏模式。执行此操作时,它会拉伸stage.fullScreenSourceRect给定的渲染区域以填充屏幕,而不是增加stage或任何组件的大小

要停止它,您必须创建FLVPlayback的子类,该子类使用UIManager的子类,并重写设置stage.fullScreenSourceRect的函数。在不利的一面,你失去了硬件的可伸缩性;但从正面来看,你的球员看起来不像是一个三岁的孩子用蜡笔画的

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();


我不知道是否有一种方法可以使自定义类在组件库中可用。

这里有另一种方法可以解决它,它更简单,而且对我来说似乎效果很好

myFLVPlayback.=虚假的

flashplayer9更新3中引入了
fullScreenTakeOver
属性。这些文档都有点模糊,但这里有更多信息:


我正在Windows上开发。这是一部用flash CS3开发的AS3 flash电影。客户端大多使用windows,但相当大一部分使用Mac。这与新的缩放行为不起作用-一旦进入全屏,stage.stageWidth和stage.stageHeight将设置为视频的尺寸,而不是屏幕。该设置是一个良好的开端;虽然如果你使用它,你必须自己做其余的布局;它不会拉伸播放器以填充屏幕。Meh。让我知道你是否找到了这篇文章,我会编辑网址。
var myFLVPLayback:CustomFLVPlayback = new CustomFLVPlayback();
myFLVPlayback.fullScreenTakeOver = false;