第 14章 多媒体编程
14.1 显示图像
14.2 播放动画
14.3 播放音频
14.4 习题
14.1 显示图像
14.1.1 使用 Applet类
14.1.2 使用 ImageIcon类
14.1.3 使用 MediaTracker类跟踪图像下载
14.1.1 使用 Applet类
获取图像对象的方法:
– public Image getImage(URL url)
– public Image getImage(URL url,
String name)
例:
Image image1=getImage(getCodeBase(),
"image\T1.gif");
//在当前 applet所在目录的子目录 image中装入指定图像文件
Image image2=getImage(
getDocumentBase(),"T1.gif");
//在包含当前 applet的 HTML文件所在目录中装入指定图像文件
14.1.1 使用 Applet类(续)
显示图像的方法:
public abstract boolean drawImage(Image img,
int x,int y,ImageObserver observer)
public abstract boolean drawImage(Image img,
int x,int y,int width,int height,
ImageObserver observer)
例 14-1 使用 Applet类源代码 运 行
14.1.2 使用 ImageIcon类
ImageIcon类的构造方法:
– public ImageIcon(String filename)
– public ImageIcon(Image image)
– public ImageIcon(URL location)
14.1.2 使用 ImageIcon类 (续)
获取 URL地址:
URL url=this.getClass().getResource(
"T1.gif");
例 14-2 使用 ImageIcon类源代码 运 行
14.1.3 使用 MediaTracker类跟踪图像下载
调用 getImage() 时,系统会启动一个独立的线程来下载图像,这使得程序在下载图像的同时能执行其他操作。因此,正在下载的图像有可能只能部分地显示。为了解决这个问题,必须使用 MediaTracker编写相关的跟踪程序判断图像是否已经完全下载。
ImageIcon会自动使用 MediaTracker监视图像的下载状态,并保证在完成下载之前程序不会试图使用该图像。
14.2 播放动画
控制动画播放的方法:
– 多线程
–java.util.Timer
例 14-3 使用多线程播放动画源代码 运 行
14.2.2 双缓冲技术
双缓冲技术首先创建一个后台的绘图缓冲区,然后在该缓冲区中绘制图像(图形),只有绘制工作完成后才一次性地将缓冲区中的图像(图形)在屏幕上显示出来。
JComponent组件在默认情况下都使用双缓冲技术绘图。
14.3 播放音频
Java 2不仅允许在 applet中播放音频,还允许在 application中播放音频。
Java 2中可以播放的音频文件格式为
WAV,AIFF,MIDI,AU,RMF等。
14.3.1 在 applet中播放音频
在 applet中播放音频的方法:
– public void play(URL url)
– public void play(URL url,String name)
例:
play(getDocument(),"T1.au");
14.3.1 在 applet中播放音频(续)
获取 AudioClip对象的方法:
– public AudioClip getAudioClip
(URL url)
– public AudioClip getAudioClip(URL
url,String name)
AudioClip中控制音频播放的方法:
– public void play()
– public void loop()
– public void stop()
14.3.1 在 applet中播放音频(续)
调用 loop()或 play()时,系统会为它们启动一个独立的线程。
例 14-4 在 applet中播放音频源代码 运 行
14.3.2 在 application中播放音频
JDK 1.2在 Applet类中定义了一个静态方法:
public static final AudioClip newAudioClip
(URL url)
//从指定的 url位置取得 AudioClip对象例:
URL url=this.getClass().getResource
(filename);
AudioClip audio=Applet.newAudioClip
(url);
14.4 习 题
14.1 显示图像
14.2 播放动画
14.3 播放音频
14.4 习题
14.1 显示图像
14.1.1 使用 Applet类
14.1.2 使用 ImageIcon类
14.1.3 使用 MediaTracker类跟踪图像下载
14.1.1 使用 Applet类
获取图像对象的方法:
– public Image getImage(URL url)
– public Image getImage(URL url,
String name)
例:
Image image1=getImage(getCodeBase(),
"image\T1.gif");
//在当前 applet所在目录的子目录 image中装入指定图像文件
Image image2=getImage(
getDocumentBase(),"T1.gif");
//在包含当前 applet的 HTML文件所在目录中装入指定图像文件
14.1.1 使用 Applet类(续)
显示图像的方法:
public abstract boolean drawImage(Image img,
int x,int y,ImageObserver observer)
public abstract boolean drawImage(Image img,
int x,int y,int width,int height,
ImageObserver observer)
例 14-1 使用 Applet类源代码 运 行
14.1.2 使用 ImageIcon类
ImageIcon类的构造方法:
– public ImageIcon(String filename)
– public ImageIcon(Image image)
– public ImageIcon(URL location)
14.1.2 使用 ImageIcon类 (续)
获取 URL地址:
URL url=this.getClass().getResource(
"T1.gif");
例 14-2 使用 ImageIcon类源代码 运 行
14.1.3 使用 MediaTracker类跟踪图像下载
调用 getImage() 时,系统会启动一个独立的线程来下载图像,这使得程序在下载图像的同时能执行其他操作。因此,正在下载的图像有可能只能部分地显示。为了解决这个问题,必须使用 MediaTracker编写相关的跟踪程序判断图像是否已经完全下载。
ImageIcon会自动使用 MediaTracker监视图像的下载状态,并保证在完成下载之前程序不会试图使用该图像。
14.2 播放动画
控制动画播放的方法:
– 多线程
–java.util.Timer
例 14-3 使用多线程播放动画源代码 运 行
14.2.2 双缓冲技术
双缓冲技术首先创建一个后台的绘图缓冲区,然后在该缓冲区中绘制图像(图形),只有绘制工作完成后才一次性地将缓冲区中的图像(图形)在屏幕上显示出来。
JComponent组件在默认情况下都使用双缓冲技术绘图。
14.3 播放音频
Java 2不仅允许在 applet中播放音频,还允许在 application中播放音频。
Java 2中可以播放的音频文件格式为
WAV,AIFF,MIDI,AU,RMF等。
14.3.1 在 applet中播放音频
在 applet中播放音频的方法:
– public void play(URL url)
– public void play(URL url,String name)
例:
play(getDocument(),"T1.au");
14.3.1 在 applet中播放音频(续)
获取 AudioClip对象的方法:
– public AudioClip getAudioClip
(URL url)
– public AudioClip getAudioClip(URL
url,String name)
AudioClip中控制音频播放的方法:
– public void play()
– public void loop()
– public void stop()
14.3.1 在 applet中播放音频(续)
调用 loop()或 play()时,系统会为它们启动一个独立的线程。
例 14-4 在 applet中播放音频源代码 运 行
14.3.2 在 application中播放音频
JDK 1.2在 Applet类中定义了一个静态方法:
public static final AudioClip newAudioClip
(URL url)
//从指定的 url位置取得 AudioClip对象例:
URL url=this.getClass().getResource
(filename);
AudioClip audio=Applet.newAudioClip
(url);
14.4 习 题