Java教材课件10多媒体编程
- 格式:pdf
- 大小:419.59 KB
- 文档页数:50
else if(obj == stopS) { sound.stop( ); //停止播放声音文件 } else { sound.loop( ); //循环播放声音文件 } }} • 编写如下的HTML文件,命名为Li10_02.htm保存,为 运行该 Applet 做准备。后面的 Applet 程序也可以按如 下格式改写即可。
• Graphics 类的方法有很多, 对于部分方法读者可 以在教材中查询到。 • 图形的绘制颜色一般是通过 setColor(Color c) 方法 来改变的,当需要以某一种新的颜色来绘制某一个 图形时,就需要设定一种新的颜色对象然后通过 setColor()方法来改变它。通常可以经过Color类 的静态属性来创建一个指定颜色的颜色对象。如创 建一个白色对象为: Color c = Color.WHITE; • Color 类的静态颜色属性是有很多的 ,常用的有 WHITE( 白 色 ) 、 BLACK( 黑 色 ) 、 BLUE( 蓝 色 ) 、 CYAN( 青 色 ) 、 GRAY( 灰 色 ) 、 GREEN( 绿 色 ) 、 ORANGE( 橙色 ) 、 PINK( 粉红色 ) 、 RED (红色)、 YELLOW(黄色)等。
• getAudioClip () 方法的参数 URL 指明 声音文件的位置,参数 name是指明声音 文件名。
•
假设“gun.wav”是指当前目录下的声音文件,下面的代 码行说明加载声音文件进入剪贴对象: AudioClip co = getAudioClip(getCodeBase( ),"gun.wav"); getAudioClip() 方法仅仅能在 applet 内调用,在 Java 应用 程序里是不能使用该方法的。随着 JAVA2 的引入,应用 程序可以用Applet类的newAudioClip()方法装入声音文件。 newAudioClip()方法格式为: public static final AudioClip newAudioClip(URL url)
把声音加载到AudioClip对象中
• 启动、停止和循环播放声音文件,可以 用 applet 的 getAudioClip ()方法把它装 载 进 入 AudioClip 对 象 , 利 用 getAudioClip()方法加载声音文件有两 种格式:
AudioClip getAudioClip ( URL url ); AudioClip getAudioClip ( URL url 中,可以利用java.applet包中的AudioClip 类进行播放声音文件,并且可以通过该类中的方法对声 音文件的播放进行高级控制。该类在 java.applet.AudioClip类库中定义。下面介绍其具体实 现: 1. 使用import语句引入该类库。格式如下:
import
图形与文本
• Java 处 理 图 形 最 基 本 也 是 最 重 要 的 类 就 是 java.awt.Graphics 类,用这个类可以完成绘制 简单的图形,例如画线、写字、画几何形状等。 • Java语言的类库中提供了丰富的绘图方法,其 中大部分对图形、文本、图像的操作方法都定 义 在 Graphics 类 中 。 因 为 Graphics 类 是 java.awt 程序包的一部分,因此,每当进行图 形、文本、图像的处理时,必须先把该类库导 入 Java 程 序 , 即 在 源 文 件 的 头 部 写 上 : “import java.awt.Graphics;”。
〖例10.1〗 简单声音文件播放应用举例。播放声音剪辑 文件test.wav,该声音文件位于Applet小应用程序所 在目录中。 //播放当前目录下的声音文件test.wav。Li10_01.java import java.awt.*; import java.applet.*; public class Li10_01 extends Applet{ public void start( ){ play(getCodeBase( ),"test.wav"); } public void paint(Graphics g) { //用来在屏幕上显示正在播放的声音文件信息 g.drawString("正在播放音乐…" + getCodeBase( ) + ":test.wav", 5, 10); } }
• 由于Java采用了JVM虚拟机机制,一个Java程序就可以运 行在任何一个安装了Java 虚拟机的系统上,这样就使得 Java 程序与操作平台无关。因此,在 Java 环境下播放声 音的方法与计算机硬件无关,从而简化了 Java 处理多媒 体的编程难度。 • Java 在 Applet 小应用程序中提供的最简单的声音播放技 术是使用Applet类中的play()方法播放声音文件。 • 下面就介绍一下这种播放声音文件的方法。play ()方 法的格式如下: public void play(URL url); public void play(URL url, String name); • play(URL url)方法能播放URL地址为url的声音文件,而 play(URL url,String name)方法则能播放URL地址为url、 文件名为 name 的声音文件。如果系统没有找到该声音文 件,计算机将不播放任何声音。
第10章 多媒体编程
教学目的要求
1. 掌握 Java 语言播放声音、处理图形和图 像的方法; 2. 掌握 Java 语言实现动画的方法,并能够 对其实现进行优化。
10.1 检索与使用声音文件
简单声音文件播放
• 多媒体功能在 Applet 中是必不少的一部分,优美的音 乐,漂亮的界面往往是一个成功网页所必需具备的条 件。在 JDK1.0 上, Java 只支持以单声道 8KHz 的采样频 率存储的 au 格式的声音文件,但是, Java2 的 API 以及 声音包提供了强大的音频格式的支持,Java2平台增加 了对AIFF、WAV以及MIDI等声音文件类型的支持。
• 在运行本例程序前,读者要确认在 Li10_01程序所在目录中存放有 test.wav 声音文件,而程序中的getCodeBase() 方法返回Applet小应用程序的URL。 • play ()方法只能播放声音文件一次, 如果希望循环播放声音文件,或随时停 止播放,则该方法不能满足需要。
AudioClip对象
•
• 前面使用 getAudioClip() 方法加载声音文件的代 码可以改写为下面的代码以用于Java应用程序: AudioClip co = newAudioClip(“gun.wav”); • 该方法也是 java.applet.Applet 类的一部分,可以 用于 Applet ,也可以用于非 Applet 程序。 Applet 可 以 使 用 getCodeBase() 和 getDocumentBase() 获 得 的 参 数 构 造 URL 来 使 用 音 频 文 件 , getCodeBase()方法获取Applet类文件所在位置的 URL地址,返回的地址可以是因特网上的一个地 址,也可以是本地磁盘上的一个位置。用于因特 网地址的标准协议是 http ,本地地址的协议是 File 。 getDocumentBase() 方法获取 HTML 文档的 URL地址。
<html> <head><title>播放声音的Java小应用程序</title></head> <body> <applet code="Li10_02.class" WIDTH=400 HEIGHT=200> </applet> </body> </html>
10.2 图形与动画
• Java具有很强大的处理图形和动画的功能, 它 可 以 处 理 图 形 ( Graphic ) 、 图 像 (Image)以及制作动画(Animation)等。
• 当想要在屏幕上绘制图形、文本、图像时,并不需要直接 使用new来产生一个Graphics类的对象实例,只需要有一个 画板,在这个画板上它就可以进行各种各样的画图操作。 画板是需要有一个实体的,而ponent类代表 着所有的Java组件具有getGraphics()方法,返回一个图形 对象,这样就可以在所有的Java组件上进行画图操作了。 而在java.awt.Applet类的paint()方法中,可以得到一个 Graphics对象的引用,这是系统直接将生成好的Graphics 对象通过参数形式传递给paint()方法。因此,只要在这个 对象上进行图形、文本及图像的绘制操作,就可以在屏幕 上看到所显示的结果。
add(playS); add(stopS); add(loopS); //使按钮显示在浏览器窗口中 try {//用getAudioClip方法将AudioClip对象初始化,获 取声音文件名 sound = getAudioClip(getDocumentBase(),"test.wav"); }catch(Exception e){} } public void actionPerformed(ActionEvent evn) { Object obj = evn.getSource(); //getSource()将返回触发 事件的按钮名称 if(obj == playS) { //判断触发的事件按钮 sound.play( ); //播放一次声音文件 }
• 现在,可在任何地方使用方法 play() 播放声音 文件了。 play() 一旦被调用立刻开始播放声音。 但有一点要注意:如果声音文件不存在, AudioClip 对象的值将是空的,但程序不会有 出错信息,在编写程序过程中可以通过对该条 件进行判断来检测声音文件是否存在。 • 〖例10.2〗 高级声音播放示例。下面是一个在 Applet中利用AudioClip类控制声音文件播放 的例子。 //高级声音播放示例。Li10_02.java import java.awt.*; import java.applet.*; import java.awt.event.*;