2008年7月19日土曜日

基本的な動画の見本

NetBeans 6.1用JavaFX追加接続(Plugin)プログラムに付属している見本を参考に、基本的な動画応用プログラムの見本を作ってみました。
実行すると、図のような円が色を変えながら左右に往復運動します。
次に、コードを示します。

package motionPicture;

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Frame;
import javafx.application.Stage;
import javafx.scene.geometry.Circle;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;

import java.lang.System;

var x: Integer = 50;
var vx: Integer = 1;
var color: Color = Color.rgb(25, 50, 0);

var timeline: Timeline = Timeline {
repeatCount: Timeline.INDEFINITE
keyFrames:
KeyFrame {
time: 10ms
action: function(): Void {
x += vx;
color = Color.rgb((x / 2), x, 0);
if (x < 50) {
vx = 1;
} else if (x > 250) {
vx = -1;
}
}
}
};

timeline.start();

Frame {
title: "Basic Motion"
width: 310
height: 130
visible: true
closeAction: function(): Void {
System.exit(0);
}
stage: Stage {
fill: Color.LIGHTGRAY
content: Circle {
centerX: bind x, centerY: 50, radius: 30
fill: bind color
}
}
}
動画は、前はdur演算子を用いて実現していましたが、JavaFX SDKでは、javafx.animation.Timelineクラスの機能を利用します。
repeatCount属性には、動画の繰り返し回数を、0以上の整数で指定します。無限に繰り返すときは、上記のように、
Timeline.INDEFINITEを指定します。
keyFrames属性には、KeyFrameの列を指定します。
そして、start()関数を呼び出すと、動画が開始します。
また、各KeyFrameのtime属性には、
Timelineの1周期における相対時刻を指定します。
action属性には、
Timelineの各周期で、time属性で指定した時間が経過したときに呼び出される関数を指定します。上記の例では、無名関数で動画処理を定義しています。
以上が、基本的な動画の記述方法の例です。
最後に、ご注意を一言。本当は、枠付き窓の表題は(「Basic Motion」ではなく)日本語で表示したかったのですが、私が利用している、
2008/07/16現在の日々構築版追加接続プログラムでは日本語表示ができません、(標準出力へも表示できません)。「MS932にマップできない」旨の誤り通報文が表示されて構築できなかったり、構築には成功しても、表示は文字化けを起こします
Javaのプログラムからは問題なく日本語表示できるので、JavaFX追加接続プログラムに関連した問題と思われますが、原因は不明です(追加接続プログラム自体の問題なのか、設定上の問題なのかも分かりません)。

0 件のコメント: