Вопрос

 var width = 400;
 var height = 400;

Stage {
    style: StageStyle.TRANSPARENT

    onClose: function():Void {
       System.exit(0);
    }

    scene: Scene {
        content: Scribble {}
        width: width
        height: bind height
    }
}

Почему ширина работает, а высота нет?И что я могу сделать, чтобы это исправить?Netbeans говорит:

высота имеет доступ только к скрипту (по умолчанию) в javafx.scene.Scene

Это было полезно?

Решение

Хорошо, я понял:

var width : Number = 400;
var height : Number = 400;

var stage:Stage = Stage {
    width: bind width with inverse
    height: bind width with inverse
    scene: Scene {
      content: Scribble {
                 canvasWidth: bind stage.scene.width
                 canvasHeight: bind stage.scene.height
               }
    }
}

Хотя на самом деле мне не нужно указывать здесь ширину и высоту, потому что я могу получить к ним доступ через переменную сцены.Ширина и высота сцены обновляются при изменении ширины и высоты сцены.Я обнаружил, что CanvasWidth будет обновляться намного лучше, если он привязан к ширине и высоте сцены, а не к ширине и высоте var (которые обновляются только после завершения изменения размера).

Другие советы

Если быть более точным, ширина и высота сцены объявлены как «public-init».Это означает, что их можно установить только во время инициализации.Привязка высоты в литерале объекта сцены подразумевает, что высота будет обновлена, отсюда и ошибка.Ширина и высота сцены объявлены как «общедоступные», что означает, что их можно обновлять.

Не следует ни к чему привязывать размеры сцены.Главным образом потому, что размеры сцены не будут обновляться, когда пользователь попытается изменить размер содержащего ее окна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top