我有一个网站,我在其中收集使用.swf文件的Flash屏幕分辨率数据和来自JavaScript的相同数据,并将其发送到我的服务器。
对于某些用户而言,此数据看起来不正确-有时Flash分辨率大于或小于浏览器中报告的屏幕分辨率。
例如,一个用户具有JavaScript中报告的1600x900
分辨率屏幕,但Flash报告的屏幕尺寸为1366x768
。
我正在使用的ActionScript属性是:flash.system.Capabilities.screenResolutionX
flash.system.Capabilities.screenResolutionY
我正在使用的JavaScript属性是:window.screen.width
window.screen.height
在ActionScript或JavaScript中,是否有可能会期望这些值始终不正确的条件?
最佳答案
我认为问题在于Flash Player的flash.system.Capabilities.screenResolutionX/Y
属性仅报告主显示器的分辨率。 (如@akmozo对问题的评论中所述)
来自documentation :(重点是我的)
此属性不会使用用户的屏幕分辨率进行更新,而仅指示Flash Player或Adobe AIR应用程序启动时的分辨率。此外,该值仅指定主屏幕。
在JS(可能取决于浏览器)中,window.screen.width/height
将基于浏览器窗口所处的实际监视器进行报告。
因此,在浏览器窗口不在主显示屏上的情况下,您的差异可能会出现。 (因此,AS3报告主要显示,而JS报告实际使用的显示)
如果您需要使用Flash并获取准确的值,建议您使用以下一种技术:
使用stage.fullScreenWidth
和stage.fullScreenHeight
值,应为您提供当前监视器的分辨率。
使用ExternalInterface并从JavaScript获取数据:
if(ExternalInterface.available){
var screenW:int = int(ExternalInterface.call("window.screen.width"));
var screenH:int = int(ExternalInterface.call("window.screen.height"));
}
关于javascript - flash.system.Capabilities.screenResolutionY和flash.system.Capabilities.screenResolutionX的报告值是否不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926064/