Javascript flash.system.Capabilities.ScreenResolution和flash.system.Capabilities.screenResolutionX的报告值是否不正确?

Javascript flash.system.Capabilities.ScreenResolution和flash.system.Capabilities.screenResolutionX的报告值是否不正确?,javascript,actionscript-3,flash,actionscript,screen-resolution,Javascript,Actionscript 3,Flash,Actionscript,Screen Resolution,我有一个网站,我使用.swf文件收集Flash屏幕分辨率数据,并从JavaScript收集相同的数据,然后将其发送到我的服务器 对于某些用户来说,这些数据看起来是错误的——闪存分辨率有时会比浏览器中报告的屏幕分辨率大或小 例如,一个用户拥有JavaScript中报告的1600x900分辨率屏幕,但Flash报告的屏幕大小为1366x768 我使用的ActionScript属性包括: flash.system.Capabilities.screenResolutionX flash.system.

我有一个网站,我使用.swf文件收集Flash屏幕分辨率数据,并从JavaScript收集相同的数据,然后将其发送到我的服务器

对于某些用户来说,这些数据看起来是错误的——闪存分辨率有时会比浏览器中报告的屏幕分辨率大或小

例如,一个用户拥有JavaScript中报告的
1600x900
分辨率屏幕,但Flash报告的屏幕大小为
1366x768

我使用的ActionScript属性包括:

  • flash.system.Capabilities.screenResolutionX
  • flash.system.Capabilities.screenResolution
  • 我使用的JavaScript属性包括:

  • window.screen.width
  • window.screen.height

  • 当人们期望这些值在ActionScript或JavaScript中始终不正确时,是否存在任何情况?

    我想问题在于flash player的
    flash.system.Capabilities.screenResolutionX/Y
    属性只报告主监视器的分辨率。(如@akmozo对该问题的评论所述)

    来自:(我的)

    此属性不会随用户的屏幕分辨率更新,而只指示Flash Player或Adobe AIR应用程序启动时的分辨率。此外,该值仅指定主屏幕

    在JS中(这可能取决于浏览器),
    window.screen.width/height
    将根据浏览器窗口所在的实际监视器进行报告

    因此,您的差异可能出现在浏览器窗口在主显示器上为而非的情况下。(因此AS3报告主显示,JS报告实际使用的显示)

    如果您需要使用Flash并获得准确的值,我建议您使用以下技术之一:

  • 使用
    stage.fullScreenWidth
    stage.fullScreenHeight
    值,该值应提供当前监视器的分辨率

  • 使用JavaScript并从中获取数据:

    if(ExternalInterface.available){
        var screenW:int = int(ExternalInterface.call("window.screen.width"));
        var screenH:int = int(ExternalInterface.call("window.screen.height"));
    }
    

  • 尝试验证您的用户是否没有多个屏幕,因为flash返回的值仅适用于主屏幕和flash player启动时。事实上,它们不匹配的情况很可能是浏览器不在主屏幕上时-因此JS报告屏幕实际处于打开状态,AS3报告主屏幕。