Heaps.io: h2d.Scene.setFixedMode не имеет никакого эффекта - PullRequest
3 голосов
/ 21 апреля 2019

В следующем коде 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();
    }
}

1 Ответ

3 голосов
/ 22 апреля 2019

Скорее всего, вы неправильно поняли, что делает эта функция. (Но это понятно из-за неоднозначного написания документации)
Когда вы звоните setFixedSize, вы делаете 2 вещи:

  1. Вы устанавливаете s2d.width и s2d.height как статическое значение, которое вы устанавливаете при вызове функции.
  2. Из-за того, как работает RenderContext, если размер s2d не соответствует размеру окна, он растягивается, чтобы заполнить весь экран.

Скорее всего, вы ожидали, что он не будет масштабироваться и останется статичным, даже если размер окна будет изменен. Это невозможно в настоящее время. Документация setFixedSize гласит, что она предотвращает автоматическое изменение размера сцены, и действительно делает это, растягивая сцену вместо изменения ее размера в соответствии с размером окна. (И да, хотя он делает то, что говорит, его легко понять неправильно)

Существует PR, ожидающий , который восстанавливает масштабирование s2d, что исключило бы setFixedSize и обеспечит лучшее решение для масштабирования в целом.

...