所以我创建了我的vdeo播放器,但我在处理不同大小的视频时遇到了问题。如何按比例正确缩放视频?
我从元数据对象获得原始宽度和高度:
private function onMetaData(newMeta:Object):void
{
_height = newMeta.height;
_width = newMeta.width;
scaleProportional();
}
答案 0 :(得分:2)
这样做的一种方法是计算比例因子。它等于宽度除以高度:
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;
}
另一种方法是找出缩放视频的因素,然后设置scaleX
和scaleY
而不是width
和height
:
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;
}
您还可以使用2.中的方法通过覆盖DisplayObject
,width
,height
和{{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 ...