2012年2月27日月曜日

JavaFX2.0を使っていろんな方法で音を鳴らしてみた。

音を鳴らしてみようと思って探してみたら"AudioClip"ってのと"MediaPlayer"ってのがあるらしい。

public class SoundTest extends Application {

    public static void main(String[] args) {
        launch(args);
    }
    AudioClip ac;
    Media media;
    MediaPlayer mp;

    @Override
    public void start(Stage primaryStage) {
        media = new Media(new File("./koredemo.mp3").toURI().toString());
        ac = new AudioClip(new File("./koredemo.mp3").toURI().toString());
        mp = new MediaPlayer(media);
        primaryStage.setTitle("これでもくらえ!");
        Button btnMP = new Button();
        Button btnAC = new Button();
        btnMP.setText("Say MediaPlayer");
        btnAC.setText("Say AudioClip");
        btnMP.setOnAction(new EventHandler() {

            @Override
            public void handle(ActionEvent event) {
                mp.play();
                System.out.println(mp.getStatus());
            }
        });
        btnAC.setOnAction(new EventHandler() {

            @Override
            public void handle(ActionEvent event) {
                ac.play();
                System.out.println("Hello World!");
            }
        });

        HBox root = new HBox(20d);
        root.getChildren().add(btnMP);
        root.getChildren().add(btnAC);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }
}

こんな感じ、汚いけど勘弁して下さい。
AudioClipの方は連打しても音が鳴るけどMediaPlayerは連打じゃ音がならないですねー。何かヒントになるかと思ってgetStatusをしてみたのですが
"READY","PLAYING","STOPPED"の三種類のパターンがあるみたいです。stop()で止めてやればまた鳴るわけですが、再生待ちみたいのをどうやればいいんだか。
効果音とかを使うならAudioClipでしょうね。


//なんかソースの最後にゴミが入る・・・なんやこれ・・・

1 件のコメント: