正确定位(屏幕宽度和高度)

Proper positioning (Screen width & height)

这里有点迷路。我有两个电影剪辑。我想要一个在最左边(在用户将鼠标悬停在屏幕左侧之前无法触及)和一个在最右边。我试过 Screen, Capabilities, and stage.

我不知道为什么,但显然我的分辨率是 1536 x 864?

trace("Screen x = " + Capabilities.screenResolutionX); //Screen x = 1536
trace("Screen y = " + Capabilities.screenResolutionY); //Screen y = 864

我不想将原生 window 的位置设置为舞台的高度和高度与 screenResoltionX 和 Y 的差异,因为这个数字对我来说太离谱了。我正在使用当前分辨率为 1920 x 1080 的显示器。我唯一能想到的是我的笔记本电脑此时设置为仅在显示器上显示,主屏幕处于非活动状态,但 window 出现在我的显示器上,所以我假设它从我的显示器上获取值.. 并且我的笔记本电脑的屏幕没有接近那个奇怪的分辨率。有人知道这是从哪里来的吗?我以前从没见过这个。来自 stage.fullScreenWidth 和 stage.fullScreenHeight..

的相同数字 return

我正在使用 Adob​​e AIR 17.0 来构建它。用不透明的 window 构建它。舞台的当前大小设置为 1024 x 786。

编辑:我希望这些对象位于用户屏幕的边缘。我正在尝试获取代表用户屏幕整个边界的网格。

使用 Capabilities.screenResolutionXCapabilities.screenResolutionY 时,它针对 主显示器 进行报告(因此,如果您有多个显示器,无论是哪个显示器您的应用程序已打开,它将报告主显示器的分辨率),并且仅在您的应用程序启动时报告(因此,如果您在应用程序启动后更改分辨率 Capabilities.screenResolutionX 将不会反映新的屏幕分辨率)。

这是文档中的引述:(强调我的)

This property does not update with a user's screen resolution and instead only indicates the resolution at the time Flash Player or an Adobe AIR application started. Also, the value only specifies the primary screen.

就您的目的而言,屏幕分辨率似乎无关紧要。只需使用 stage.stageWidthstage.stageHeight 值,因为它们反映了您实际应用程序的边界,无论它在哪个显示器上,或者它是否是全屏、windowed 或缩放等

if(stage.mouseX < stage.stageWidth * 0.5){
    //mouse is on the left hand side of the application.
}

编辑

根据您的评论,听起来您需要这样做:

当您的应用首次运行时,执行此操作以使其成为 responsive/liquid:

stage.align = StageAlign.TOP_LEFT
stage.scaleMode = StageScaleMode.NO_SCALE

然后 stage.stageWidthstage.stageHeight 属性将反映实际 window 大小。

您可以通过以下代码将其最大化:

stage.nativeWindow.maximize();

您可以通过以下方式收听 window 尺码变化:

stage.addEventListener(Event.RESIZE, myResizeHandler);

function myResizeHandler(e:Event):void { 
    //stage.stageWidth & stage.stageHeight have changed
}