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[];

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

read more...

12.23.2008

Как стартует апплет JavaFX

При открытии страницы содержащий апплет JavaFX провверяется наличие библиотек JavaFX runtime.


Во время проверки на странице виден только логотип Java.

Создание апплета JavaFX

При компиляции апплета JavaFX в Neatbeans в папке distr проекта создаётся 4 файла:
  • приложение.html - страница со встроенным апплетом
  • приложение.jar - сам апплет
  • приложение.jnlp - для запуска апплета через Webstart
  • приложение_browser.jnlp - для запуска апплета встроенного в страницу (обратите внимание что Netbeans задаёт неверный аттрибут codebase)
Стандартная страница запуска создаваемая Netbeans для запуска апплета содержит следующий код:
<script src="http://dl.javafx.com/dtfx.js">script>
<script>
javafx(
{
archive: "BreakOut.jar",
width: 800,
height: 400,
code: "breakout.Main",
name: "BreakOut"
}
);
script>
где http://dl.javafx.com/dtfx.js это ссылка на скрипт который должен выполнить скачивание JavaFX runtime. Файлов много и они достаточно большие по объёму но скачивание происходит только один раз и потом любые апплеты JavaFX будут брать их из кэша.

Для просмотра файлов в кэше откройте контольную панель Java (для Windows: Старт/Панель управления/Java)



и на вкладке General нажмите кнопку View...



- все файлы где адрес начинается с http://dl.javafx.com являются частью JavaFX runtime.

Подпись апплета

для доступа к любым ресурсам системы апплет должен быть подписан. При старте подписанного апплета появляется предупреждение:



Для подписи достаточно в свойствах проекта Netbeans поставить соответствующую галку:



Для того чтобы окошко предупреждения не появлялось можно купить доверенный сертификат Verisign.

Пример апплета

http://molgav.nn.ru/surikov/files/jfx/breakout/BreakOut.html

Запуск через Webstart
http://molgav.nn.ru/surikov/files/jfx/breakout/BreakOut.jnlp

read more...

12.17.2008

BreakOut локальная версия

Пример игрушки на JavaFX. Демонстрирует 2D-графику, звук, хранения состояний и локализацию.



Скачать breakout.zip - 3Mb

Рантайм JavaFX внутри архива, для запуска нужна Java v1.5 или выше.

При работе под linux возможно шрифты надписей могут выглядеть по-другому:


Желательно наличие в системе звуковой карты.


read more...

12.05.2008

Где найти документацию

Есть достаточно большой объём статей по JavaFX.

Русскоязычные ресурсы

Англоязычные ресурсы
После установки SDK справка по API находится в папке
C:\Program Files\NetBeans 6.5\javafx2\javafx-sdk1.0\docs\



read more...

Как запустить стандартные примеры

В дистрибутиве JavaFX 1.0 SDK поставляется большое количество примеров.





Для запуска примеров

  • скачайте дистрибутив
  • откройте Netbeans
  • выберите пункт меню File/New project
  • выберите проект из узла Samples/JavaFX



будет создан проект с примером. Для запуска проекта щёлкните его правой кнопкой и выберите Run Project



Большинство демонстрационных примеров представляют из себя бесполезные разноцветные прыгающие кружочки либо фрактальные узоры. Среди более-менее функциональных можно отметить:

Bounce



Простенькая игрушка без звука

SimpleVideoPlayer



Путь к файлу ролика указан неверно, для просмотра нужно отредактировать файл Main.fx и указать путь к видеофайлу, примерно так:

def mediaUrl:String ="file://C://fl/bfly.wmv";
//"http://capra.sfbay.sun.com/~jm158417/javafx_videos/big_buck_bunny_512x288_h264.flv";



WetherFXApplication



Данные о погоде берутся из сервиса http://weather.yahooapis.com/forecastrss?p=


read more...

Вышел JavaFX 1.0 SDK




read more...