当前位置: 首页 > news >正文

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

题目: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{@Overridepublic 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");//可以用一个短的音频来测试LoopAudioClip 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);}
}
  •  结果展示


http://www.mrgr.cn/news/264.html

相关文章:

  • Route路由 Vue2
  • 【STM32实物】基于STM32+ESP32+手机APP设计的智能宠物喂食系统实物源码原理图PCB设计文档演示视频——(文末工程资料下载)
  • 11、stm32控制180度舵机
  • 水库大坝安全预警系统的作用
  • Android 12系统源码_屏幕设备(二)DisplayAdapter和DisplayDevice的创建
  • 为何UDP攻击相比常规攻击更易导致服务器瘫痪?
  • 【数据结构】汇总六、图
  • tcpdump入门——每种flag分别表示什么意思
  • 虚幻5|AI行为树,进阶篇
  • linux查看网卡速度和pcie速度
  • 解决firefly rk3399使用ffmpeg硬解码rga报错的问题
  • Unity将摄像机视角保存成Json文件方便读取使用
  • Django+anaconda
  • 八股面试大总结②——Linux系统
  • JavaScript - 对象
  • 掌握ChatGPT写作艺术:从入门到精通的四个层次
  • 如何利用RPA自动化流程机器人优化企业财务流程
  • XSS---DOM破坏靶场复现
  • 换原相关(Linux、docker、pip)
  • 替代进程注入的新工具