Java与你共枕.
首 先 让 我 们 复 习 一 下 在Applet 中 放 音 乐 的 四 个 步 骤, 代 码 如 下:
import java.applet.*;
AudioClip ac=getAudioClip (getCodeBase(), File);
// 创 建Audioclip 对 象 并 装 入.au 文 件
ac.play(); // 播 放 一 次
ac.stop(); // 停 止 播 放
ac.loop(); // 循 环 播 放
大 家 可 能 认 为 此 代 码 在Application 中 也 能 使 用, 但 不 幸 的 是 它 在 编 译 时 就 会 发 生 错 误。 因 为AudioClip 对 象(object) 和getAudioClip() 方 法(method) 都 是 属 于java.applet 包 的-- 它 在Application 中 无 法 调 用。
解 决 问 题 的 办 法 是 使 用 一 些Sun 在JDK 中 发 布 但 未 正 式 注 明(undocumented) 的 特 点。 用Winzip 或Zip 观 察 一 下class.zip 文 件 就 会 发 现 除 了java.applet 包 中 包 含 对 声 音 文 件 处 理 外, 在/sun/audio 目 录 下 的sun.audio 包 也 提 供 类 似 的 方 法。 下 面 是 实 现 代 码 和 注 释:
import sun.audio.*; // 引 入sun.audio 包
import java.io.*;
InputStream in = new FileInputStream (Filename);
// 打 开 一 个 声 音 文 件 流 作 为 输 入
AudioStream as = new AudioStream (in);
// 用 输 入 流 创 建 一 个AudioStream 对 象
AudioPlayer.player.start (as);
//“player” 是AudioPlayer 中 一 静 态 成 员 用 于 控 制 播 放
AudioPlayer.player.stop (as);