我可以检测显示器是宽还是方形并相应地设置视频?

时间:2012-07-12 07:14:14

标签: actionscript-3 flash

我制作了一个全屏运行的Flash演示文稿,其中有几秒钟的动画,然后是视频开始播放,当视频结束时,它会进入主菜单。

视频使用720x1080(16:9),但我在Flash中的文档是768x576(4:3)。 我根据768x576调整了视频大小,所以在顶部和底部都是黑条。当我的Flash演示文稿在Square监视器上运行时,这是好的,如果监视器是宽的话。 我希望“动作脚本”能够检测到显示器的类型(广角或方形),如果它是Square,那么它会保持视频相同,但如果显示器很宽则会以全屏方式启动视频。

2 个答案:

答案 0 :(得分:2)

您可以使用Capabilities类,它有两个属性screenResolutionXscreenResolutionY,它们会为您提供此信息。这为您提供了主屏幕的分辨率。

您可能想重新考虑一下监视器是正方形的假设。屏幕分辨率为4:3(640x480,800x600,1024x768,1280x1024),或者在我的宽屏幕显示器上,其他一些比例既不是4:3也不是正方形(1920x1080)。您可能想要研究宽屏显示器使用的比例(笔记本电脑可能具有一系列值)。

您的代码应该在Flash Player中查询屏幕分辨率:

var screenWidth:Number = Capabilities.screenResolutionX;
var screenHeight:Number = Capabilities.screenResolutionY;

然后您可以决定切换到全屏或以常规尺寸(768x576)渲染视频的适当时间。我可以想出几种方法来决定这一点,我相信你也可以。

以下是伪代码中的一些想法,可以让您考虑为您的应用提供合适的解决方案:

if screen is not 4:3, assume wide screen and use full screen
if screenWidth >= actual width of video (1080), use full screen

答案 1 :(得分:0)

并非完全在ActionScript中,但以下是代码应如何显示的记录。

var nScreenWidth:Number =  Capabilities.screenResolutionX,
    nScreenHeight:Number = Capanilities.screenResolutionY;

var nVideoWidth:Number = video.source.getWidth(), //assuming you are using video class, this should be video native size and not video component size.
    nVideoHeight:Number = video.source.getHeight();

var nRatioX:Number = nVideoWidth / nScreenWidth,  //Calculating X and Y ratio of video source and screen.
    nRatioY:Number = nVideoHeight / nScreenHeight;

var nRatio:Number = Math.min(nRatioX, nRatioY); //Picking up smaller ratio so that we can fit video in screen.

video.width = Math.round(nScreenWidth * nRatio); //Set video component width and height, this should make it fit to screen keeping aspect ratio.
video.height = Math.round(nScreenHeight * nRatio);