最近のGUIでは,
JavaFXではこの状況を打開すべく,
また,
この問題に対し,
Production Suiteにはいくつかのツールが含まれていますが,
今回は,
JavaFXがサポートしているメディア
サウンドやムービーのAPIを紹介する前に,
表1 JavaFXがサポートしているメディア
プラットフォーム | コーデック | ファイルフォーマット |
---|---|---|
Mac OS X 10. |
ビデオ: H. オーディオ: AIFF, |
.3gp, .avi, .m4a, |
Windows XP, |
ビデオ: Windows Media Video, オーディオ: MPEG-1, |
.mp3, .wmv, |
Windows XP, |
ビデオ: On2 VP6 オーディオ: MP3 |
.flv, |
WindowsではDirectXに含まれるDirectShowがサポートしているメディアを使用することができ,
プラットフォームによらずサポートしているサウンドはMP3です。ムービーはコーディックとしてOn2 VP6を使用したAdobe Flash VideoのFLVフォーマット,
FLVフォーマットと,
FLVフォーマットだけであれば,
- ※1)
- Adobe Creative Suite 3に含まれるAdobe Flash Video Encoderでもムービーの作成が可能です。
サウンドを扱う
では,
とはいうものの,
メディアを扱うのがjavafx.
メディアを再生するのがjavafx.
リスト1
var player = MediaPlayer {
// 再生するサウンドファイル
media: Media {
source: "{__DIR__}sound.mp3"
}
};
// サウンドの再生
player.play();
これだけです。簡単ですね。
MediaPlayerクラスにはmediaアトリビュート以外に,
音符の形のノードをクリックしている間サウンドを再生し,
音符の形は楕円と直線を用いて作成しました。音符の位置はlocationX変数とlocationY変数にバインドさせます。locationXがバランスに連動し,
以下にMediaPlayerオブジェクトを生成する部分を示します。
リスト2
// 音符の形の x 座標
// サウンドの左右のバランスに連動
var locationX = 100.0;
// 音符の形の y 座標
// サウンドのボリュームに連動
var locationY = 100.0;
var player = MediaPlayer {
// 左右のバランスは -1.0 から 1.0 の範囲
balance: bind locationX / 100.0 - 1.0
// ボリュームは 0.0 から 1.0 の範囲
volume: bind (200.0 - locationY) / 200.0
// 無限に繰り返す
repeatCount: MediaPlayer.REPEAT_FOREVER
// 再生するサウンドファイル
media: Media {
source: "{__DIR__}sound.mp3"
}
}
locationXとlocationYは0から200までの値をとるようにしています。左右のバランスを表すbalanceアトリビュートは-1.
また,