Одной из важных особенностей JavaFX является binding. Упрощённо, binding это связывание значений переменных с каким-то выражением. При изменении составляющих выражения изменяется и значение переменной.
Например код
var a=0;
var b=bind a;
System.out.println("a={a}; b={b}");
a=1;
System.out.println("a={a}; b={b}");
выведет в output
a=0; b=0
a=1; b=1
Более сложный пример применения биндинга:
код класса для создания фона:
public class BackgroundImage extends CustomNode{
public var image:Image;
public var width:Number;
public var height:Number;
public override function create(): Node {
def ratio=bind image.width / image.height;
return ImageView {
fitWidth: bind if(width / height > ratio) width else 0;
fitHeight: bind if(width / height <= ratio) height else 0;
preserveRatio: true
image: image };
}
}
использование:
BackgroundImage {
image: Image {
url: "{__DIR__}bg.jpg" }
width: bind stage.width
height: bind stage.height
}
в результате изображение не меняя пропорций всегда растягивается чтобы полность занять окно либо по ширине либо по высоте.
Запустить пример через Webstart
http://molgav.nn.ru/surikov/files/jfx/snow/snow.jnlp
Связывать можно и массивы элементов, в примере падающие снежинки это массив
public var snow:Snowmate[];
в который через случайные промежутки времени вставляются новые объекты
12.28.2008
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий