JavaFX中AudioClip音频

概述

AudioClip类的前面有final修饰,所以这个类不能被继承。这个类的主要作用是播放一些较短的音频。比如设计游戏,用于开火,碰撞等短音频的播放。

比较

AudioClip可以以最小延迟播放音频片段。剪辑的加载方式与媒体对象类似,但也有一些不同,例如,媒体无法自行播放。AudioClip可以立即播放。播放行为是“触发并忘记”:一旦调用其中一种播放方法,唯一可操作的控件就是stop()。AudioClip也可以同时播放多次。要使用媒体完成相同的任务,必须为并行播放的每个声音创建一个新的MediaPlayer对象。但是,媒体对象更适合长时间播放声音。这主要是因为AudioClip将整个声音的原始未压缩音频数据存储在内存中,对于较长的音频片段来说,这些数据可能非常大。MediaPlayer在内存中只有足够的预压缩音频数据,以便在短时间内播放,因此对于长片段,尤其是压缩片段,它的内存效率要高得多。两者各有优点,选择哪一种主要是看需要。

方法

首先是构造方法,跟其他类一样,不过需要在括号内输入音频。

AudioClip audioClip = new AudioClip("");

播放音频的方法有三个,是重载的三个。play():以默认的设置播放音频。play(double volume):以默认方式播放音频,但手动设置音量。
play(double volume, double balance, double rate, double pan, int priority):手动设置括号内的选项播放音频。

audioClip.play();

设置音量的方法是setVolume(double value),获得音量管大小的方法是getVolume()

audioClip.setVolume(2.0);

停止播放音频的方法是stop(),在没有设置其他播放模式时,一般是播放完就自动停止。

audioClip.stop();

还有控制播放速度的方法setRate(double rate),使用这个方法,有利于,音频与动画的适配,看起来更和谐。

audioClip.setRate(2);

setPriority(int priority),setPan(double pan),setCycleCount(int count),setBalance(double balance)。这四个个方法分别是用于设置播放优先级,平移,循环次数和左右音量。

        audioClip.setPan(2);
        audioClip.setPriority(1);
        audioClip.setCycleCount(2);
        audioClip.setBalance(2);

注意

一、关于设置时的取值范围。
1.相对音量:播放音频时的相对音量。有效范围为0.0(相当于静音)到1.0。音量在内部被限制在这个范围,所以这个范围之外的值不会产生其他影响。音量由衰减控制,低于1.0的音量值将相应降低声级。
2.相对左右音量:音频的相对左右音量级别。有效范围为-1.0到1.0,其中-1.0为左声道提供完整音量,同时静音右声道,0.0为两个声道提供完整音量,1.0为右声道提供完整音量,并静音左声道。超出此范围的值将在内部限制。
3.相对速率:播放音频的相对速率。有效范围为0.125(1/8速度)至8.0(8倍速度);超出此范围的值将在内部钳制。音频的正常播放速率为1.0;任何其他速率都会相应地影响音高和持续时间。
4.相对“中心”:音频的相对“中心”。平移值为0.0时,正常播放片段,其中平移值为-1.0时,片段将完全移动到左侧通道,平移值为1.0时,片段将完全移动到右侧通道。与balance不同,此设置混合了两个通道,因此两个通道都不会丢失数据。在单声道剪辑上设置“平移”与设置“平衡”具有相同的效果,但CPU开销要高得多,因此不建议单声道剪辑使用此选项。
5.循环次数:设置成几次就是几次,但设置为不确定会导致一直播放,直到调用stop()方法。
二、音频获取
我是用idea写java,所以会在项目里设置资源文件夹,获取资源时,选择相对路径,便于打包和制作安装包。

猜你喜欢

转载自blog.csdn.net/YiNianShangE/article/details/125498867