如何使基于Netstream的Actionscript视频播放器自动调整大小以匹配父级大小?

时间:2011-03-09 00:03:59

标签: actionscript-3 video-streaming netstream

(我是Actionscript的新手,如果这是一个简单的问题,我很抱歉。)

我在Actionscript中做一个媒体播放器,我有以下类层次结构:

  • 主类,扩展Sprite,并包含
    • VideoPlayer类,扩展Sprite,包含一个Video对象并使用Netstream加载视频

视频播放器将嵌入不同的应用程序中,并使用不同大小的容器。有没有办法让视频播放器根据父容器的大小调整大小(如html / swfobject中所定义)?

我使用Main类上的“scaleMode”属性,我设法根据容器使flash对象重新缩放,但视频的大小始终相同。

此外,我使用视频剪辑的元数据手动和自动更改了视频对象的“宽度”和“高度”属性,并且视频尺寸似乎是错误的 - 我有一个带有320x240的swfobject,当时我改变了视频的大小以匹配swfobject大小,它渲染得比320x240小得多。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

// get the video aspect ratio
// 1.33 (4/3)  | 640 x 480
// 1.77 (16/9) | 854 x 480
//trace(_video_width / _video_height);
videoAspectRatio    = _video_width / _video_height;

// check if video is larger than stage
// check which is larger: height or width
// set video size as the largers of height or width

// if video is a 4/3 aspect ratio
if( videoAspectRatio  < 1.4)
{
    myVideo.width   = _stageWidth / videoAspectRatio;   
    myVideo.height  = myVideo.width / videoAspectRatio;

    // if movie is still to small to the stage make it bigger
    if(myVideo.height < _stageHeight)
    {
            myVideo.width = myVideo.width * (_stageHeight/myVideo.height);
            myVideo.height = _stageHeight
    }
}
else
{
    myVideo.width   = _stageWidth;
    myVideo.height  = _stageWidth / videoAspectRatio;
}