【问题标题】:Managing different mobile screen sizes - Haxe, OpenFL管理不同的移动屏幕尺寸 - Haxe、OpenFL
【发布时间】:2014-02-24 17:41:53
【问题描述】:

处理各种安卓手机屏幕比例的最佳方法是什么?

目前,我使用 EXACT_FIT,它将应用强制(拉伸)到目标屏幕。但是如何根据屏幕比例动态调整内容的大小,以便内容在视觉上保持相同的比例。

【问题讨论】:

    标签: android size screen haxe openfl


    【解决方案1】:

    如果要动态调整元素的大小和位置,则必须获取实际的屏幕分辨率,然后根据一些“基本”分辨率值计算调整大小比率。

    您可以使用

    获取屏幕尺寸

    lib.current.stageWidth lib.current.stageHeight

    请记住,要使这些值起作用,您必须在项目配置文件的 android 上将窗口尺寸设置为 0。

    【讨论】:

      【解决方案2】:

      要获得正确和真实的窗口大小,请使用:

      Lib.application.window.width
      Lib.application.window.height
      

      这并不总是一样的:

      Lib.current.stage.width
      Lib.current.stage.height
      

      【讨论】:

        【解决方案3】:

        我建议您通过反复试验找到最适合所有屏幕的尺寸。一旦你找到这个屏幕尺寸,就为你的游戏添加一个边框,它的扩展范围比大多数玩家看到的要远。然后,这将允许您填充每个屏幕并保持纵横比,同时还可以消除边缘周围的任何尴尬空白。完成此操作后,您应该能够缩放屏幕以适应屏幕的高度或宽度(始终保持您的纵横比),并且不会出现任何缩放问题。

        【讨论】:

          【解决方案4】:

          我建议将您的内容的位置和大小定义为屏幕宽度和高度的百分比。在伪 haxe 代码中(我现在正在学习 Haxe/HaxeFlixel ;)):

          class Registry {
              ...
              static var SCREEN_WIDTH;
              static var SCREEN_HEIGHT;
              ...
          
              static var X_UI_HUD_TITLE = 0.15;
              static var Y_UI_HUD_TITLE = 0.05;
          }
          
          ...
          
          class HUD {
               var title:FlxText;
          
               public function new() {
                   title = new FlxText();
                   title.x = Registry.SCREEN_WIDTH * Registry.X_UI_HUD_TITLE;
                   title.y = Registry.SCREEN_HEIGHT * Registry.Y_UI_HUD_TITLE;
          
               }
          }
          

          这样,SCREEN_WIDTHSCREEN_HEIGHT 可能会发生变化,但 title 文本将处于相同的明显位置。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-11-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-28
            • 1970-01-01
            • 2015-11-18
            相关资源
            最近更新 更多