12.28.2008

Как использовать binding

Одной из важных особенностей 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[];

в который через случайные промежутки времени вставляются новые объекты

Комментариев нет: