Java语言程序设计基础篇_编程练习题16.22(播放、循环播放和停止播放一个音频剪辑)

发布于:2024-08-15 ⋅ 阅读:(69) ⋅ 点赞:(0)

题目:16.22(播放、循环播放和停止播放一个音频剪辑)

  编写一个满足下面要求的程序:

  1. 使用AudioClip获取一个音频文件,该文件存放在类目录下。
  2. 放置三个标记为Play、Loop和Stop的按钮,如图16-46a所示。
  3. 单击Play按钮时,会播放该音频一次。单击Loop按钮时,会循环播放音频。单击Stop按钮时,会停止播放该音频。
习题思路
  1. 创建一个HBox,新建三个按钮并放置。
  2. 新建一个AudioClip(AudioClip和Media一样只支持绝对路径),为避免文件错误,相对路径建议使用File转换为绝对路径后再创建AudioClip;或者直接在绝对路径前面添加file:/(推荐)
  3. 当Play按钮按下时播放音频AudioClip.play()
  4. 当Loop按钮按下时把循环次数设为无限(audioClip.setCycleCount(MediaPlayer.INDEFINITE)
  5. 当Stop按钮按下时调用AudioClip的Stop方法(AudioClip没有暂停只有停止)
  • 代码示例 

 编程练习题16_22PlayAudio.java

package chapter_16;


import java.io.File;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.media.AudioClip;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;

public class 编程练习题16_22PlayAudio extends Application{
	@Override
	public void start(Stage primaryStage) throws Exception {
		//方法一
		/*File mediaFile = new File("src/Music/Coming_Home-Peter_Jeremias.mp3");  
        String mediaURL = mediaFile.toURL().toString();  
        if (!mediaURL.startsWith("file:")) {  
            mediaURL = "file:" + mediaURL;  
        }  
        AudioClip audioClip = new AudioClip(mediaURL);*/
		
        //方法二
		//AudioClip audioClip = new AudioClip("file:/C:/Users/Lenovo/eclipse-workspace/JavaFX/src/Music/截取.mp3");//可以用一个短的音频来测试Loop
		AudioClip audioClip = new AudioClip("file:/C:/Users/Lenovo/eclipse-workspace/JavaFX/src/Music/Coming_Home-Peter_Jeremias.mp3");
		
		HBox hBox = new HBox(10);
		hBox.setAlignment(Pos.CENTER);
		Button btPlay = new Button("Play");
		Button btLoop = new Button("Loop");
		Button btStop = new Button("Stop");
		hBox.getChildren().addAll(btPlay,btLoop,btStop);
		
		btPlay.setOnAction(e -> audioClip.play());
		btLoop.setOnAction(e -> audioClip.setCycleCount(MediaPlayer.INDEFINITE));
		btStop.setOnAction(e -> audioClip.stop());
		
		
		Scene scene = new Scene(hBox,320, 80);
		primaryStage.setTitle("编程练习题16_22PlayAudio");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
	public static void main(String[] args) {
		Application.launch(args);
	}
}
  •  结果展示