2016-06-17 20 views
1

私はJavaFXを使い慣れていません。私は現在ゲームを開発中です。javaFX mediaPlayer現在再生中のオーディオをフェードアウトする

私はMediaPlayerクラスを使用してアプリで背景音楽を設定することができました。

私が必要とするのは、(即座に停止する代わりに)曲をフェードアウトさせる方法を作成することです。

私はトランジションについて読んでいませんでしたが、実際にトランジションの使い方を理解していません。

ありがとうございます!

答えて

2

Timelineクラスは、JavaFXプロパティを変更できます。デフォルトでは、プロパティの値は、(私は信じている)、目標値に向かって補間され、あなたが望むフェード提供します:(

Timeline timeline = new Timeline(
    new KeyFrame(Duration.seconds(10), 
     new KeyValue(mediaPlayer.volumeProperty(), 0))); 
timeline.play(); 

です。KeyValueは、あなたが(ボリューム)を変更するプロパティを指定し、目標値をゼロ、つまり、ミュート)を指定します。

KeyFrameは、KeyValueの値を有効にする時間を指定します。

+1

おそらく、 'Timeline'の' onFinished'イベントで 'MediaPlayer'を止めるべきでしょう... – fabian

+0

うわー!もう1つの質問:次のコード行を実行するためにフェードアウトが終了するまでプログラムを待たせることができますか? – Franch

+0

最も簡単な方法は、Runnableがその期間スリープしているスレッドを作成し、その後、 'Platform.runLater'に渡された別のRunnableで後続のJavaFXコードを起動することです。他の方法もありますが、フェードが終わった後に何をしたいかによって異なります。 – VGR

関連する問題