【问题标题】:Proper positioning (Screen width & height)正确定位(屏幕宽度和高度)
【发布时间】:2015-11-11 21:40:43
【问题描述】:

这里有点失落。我有两个电影剪辑。我想要一个在最左边(直到用户将鼠标悬停在屏幕左侧)和一个在最右边。我尝试过使用ScreenCapabilitiesstage

我不知道为什么,但显然我的分辨率是 1536 x 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 返回相同的数字..

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

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

【问题讨论】:

    标签: actionscript-3 resolution


    【解决方案1】:

    当使用Capabilities.screenResolutionX & Capabilities.screenResolutionY 时,它会报告主显示器(因此,如果您有多个显示器,无论您的应用在哪个显示器上,它都会报告回来主显示器的分辨率),并且仅在您的应用程序启动时(因此如果您在应用程序启动后更改分辨率 Capabilities.screenResolutionX 将不会反映新的屏幕分辨率)。

    这是来自文档的引用:(强调我的)

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

    出于您的目的,屏幕分辨率似乎无关紧要。只需使用 stage.stageWidthstage.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.stageWidthstage.stageHeight 属性将反映实际的窗口大小。

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

    stage.nativeWindow.maximize();
    

    您可以通过以下方式监听窗口大小的变化:

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

    【讨论】:

    • 对不起,我应该提一下,我正试图在用户屏幕的相反边缘。运行 stage.stageWidth 和 stage.stageHeight 只返回我在 adobe flash cc 中为舞台设置的值。 1024x786。
    • 您要移动实际的应用程序窗口?
    • 您的应用程序是否全屏/最大化?
    • 是的,它是一个桌面应用程序,所以我希望窗口出现在左上角并调整其大小以占据整个屏幕。然后我想根据新大小定位这些对象,以便它们不在屏幕上,但可以通过 MouseEvent.ROLL_OVER 事件被不可见的对象访问。
    • 不,它不是全屏的,我试图避免这种情况。这个应用程序旨在取代资源管理器,这就是我想要整个桌面的远距离的原因。
    猜你喜欢
    • 2012-11-01
    • 1970-01-01
    • 2015-02-22
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多