首页 > 解决方案 > Heaps.io:h2d.Scene.setFixedMode 没有效果

问题描述

在下面的代码中,s2d.setFixedSize()没有任何效果。场景的大小不会改变,调整屏幕大小仍然会改变它。

class Main extends hxd.App {
    var bgTile : h2d.Tile;

    override function init() {
        s2d.setFixedSize(500, 500);

        bgTile = h2d.Tile.fromColor(0xFFFFFF, s2d.width, s2d.height);
        new h2d.Bitmap(bgTile, s2d);
    }

    override function update(dt:Float) {
    }

    static function main() {
        new Main();
    }
}

标签: haxe

解决方案


很可能你误解了这个函数的作用。(但这是可以理解的,因为文档是以模棱两可的方式编写的)
当你打电话给setFixedSize你做两件事:

  1. 您设置s2d.widths2d.height成为您在函数调用中设置的静态值。
  2. 由于RenderContext操作方式的原因,如果s2d大小与窗口大小不匹配,它会被拉伸以填满整个屏幕。

即使调整窗口大小,您很可能希望它不会缩放并保持静态大小。目前是不可能的。声明它防止自动调整场景大小的状态的文档setFixedSize,它确实做到了,通过拉伸场景而不是调整它的大小以匹配窗口大小。(是的,虽然它按照它说的做,但很容易误解)

一个 PR 待定,它会重新处理s2d 的缩放,这将弃用setFixedSize并为一般缩放提供更好的解决方案。


推荐阅读