如何在flash中按比例缩放不同大小的视频?

时间:2012-02-14 07:51:05

标签: flash actionscript-3 video scaling

所以我创建了我的vdeo播放器,但我在处理不同大小的视频时遇到了问题。如何按比例正确缩放视频?

我从元数据对象获得原始宽度和高度:

        private function onMetaData(newMeta:Object):void
        {           
            _height = newMeta.height;
            _width = newMeta.width;
            scaleProportional();
        }

2 个答案:

答案 0 :(得分:2)

1。比例因子

这样做的一种方法是计算比例因子。它等于宽度除以高度:

var proportions: Number = video.width / video.height;

您可以将该因素应用于您将视频设置为的任何新宽度或高度:

function scaleProportionalByWidth ( newWidth:Number ) : void {
    video.width = newWidth;
    video.height = newWidth / proportions;
}

function scaleProportionalByHeight ( newHeight : Number ) : void {
    video.height = newHeight;
    video.width = newHeight * proportions;
}

2。比例因子

另一种方法是找出缩放视频的因素,然后设置scaleXscaleY而不是widthheight

function scaleProportionalByWidth ( newWidth : Number ) : void {
    scaleProportional ( newWidth, video.width );
}

function scaleProportionalByHeight ( newHeight : Number ) : void {
    scaleProportional ( newHeight, video.height );
}

function scaleProportional ( newValue:Number, oldValue : Number ) : void {
    var scale:Number = newValue / oldValue;
    video.scaleX *= scale;
    video.scaleY *= scale;
}

3。比例显示对象类

您还可以使用2.中的方法通过覆盖DisplayObjectwidthheight和{{1}的设置者来创建任何scaleX的比例子类使所有缩放比例:

scaleY

答案 1 :(得分:0)

你可以这样做:

// set video dimensions to match player;
video.width = player.width;
video.height = player.height;

// choose the larger scale property and match the other to it;
( video.scaleX < video.scaleY ) ? video.scaleY = video.scaleX : video.scaleX = video.scaleY;

// maybe center video in player ...