这里有点迷失。我有两个动画片段。我想要一个在最左边(遥不可及,直到用户盘旋在他们的屏幕左侧)和一个在最右边。我尝试过玩Screen,Capabilities和stage。
我不知道为什么,但显然是我的决议1536 by 864?
trace("Screen x = " + Capabilities.screenResolutionX); //Screen x = 1536
trace("Screen y = " + Capabilities.screenResolutionY); //Screen y = 864
我不想将原生窗口的位置设置为舞台的高度和高度与screenResoltionX和Y的差异,因为这个数字对我来说似乎太过分了。我在显示器上的当前分辨率为1920 x 1080.我唯一能想到的是我的笔记本电脑设置只能在显示器上显示,此时它的主屏幕处于非活动状态,但窗口出现在我的屏幕上监视器,所以我假设它从我的显示器中取出值...而我的笔记本电脑的屏幕没有接近奇怪的分辨率。谁知道这是从哪里来的?我以前从未见过这个。相同的数字从stage.fullScreenWidth和stage.fullScreenHeight ..
返回我正在使用Adobe AIR 17.0来构建它。用不透明的窗口构建它。舞台的当前大小设置为1024 x 786。
编辑:我希望这些对象位于用户屏幕的边缘。我正在尝试获得一个表示用户屏幕整个边界的网格。
答案 0 :(得分:3)
使用Capabilities.screenResolutionX
& Capabilities.screenResolutionY
,报告主要显示(因此,如果您有多个监视器,无论您的应用在哪个监视器上,它都会报告主监视器的分辨率),以及仅在您的应用程序启动时(因此,如果您在应用程序启动后更改分辨率,Capabilities.screenResolutionX将不会反映新的屏幕分辨率)。
以下是文档中的引用:(强调我的)
此属性不会使用用户的屏幕分辨率更新,而只会指示Flash Player或Adobe AIR应用程序启动时的分辨率。 此外,该值仅指定主屏幕。
出于您的目的,似乎屏幕分辨率无关紧要。只需使用stage.stageWidth
& stage.stageHeight
值,因为它们反映了您的实际应用的边界,无论它在哪个监视器上,或者它是全屏,窗口还是缩放等。
if(stage.mouseX < stage.stageWidth * 0.5){
//mouse is on the left hand side of the application.
}
修改强>
根据你的评论,听起来你需要这样做:
当您的应用首次运行时,请执行此操作以使其响应/流动:
stage.align = StageAlign.TOP_LEFT
stage.scaleMode = StageScaleMode.NO_SCALE
然后stage.stageWidth
和stage.stageHeight
属性将反映实际的窗口大小。
您可以通过以下代码最大化它:
stage.nativeWindow.maximize();
您可以使用以下方式侦听窗口大小调整:
stage.addEventListener(Event.RESIZE, myResizeHandler);
function myResizeHandler(e:Event):void {
//stage.stageWidth & stage.stageHeight have changed
}