| |
ени файла.
В документации на метод getAudioClip сказано, что этот метод фактически не
выполняет загрузку звуковых данных, а только возвращает ссылку на интерфейс
AudioClip и немедленно возвращает управление. Загрузка звуковых данных
выполняется методами, предназначенными для проигрывания файла.
Однако в книге “The Java Tutorial. Object-Oriented Programming for the
Internet”, подготовленной специалистами группы JavaSoft, утверждается, что
текущие реализации Java работают по другому: метод getAudioClip возвращает
управление только после завершения загрузки звукового файла. Очевидно, вам не
стоит полагаться на то, что так будет всегда. В тех случаях, когда нежелательно
блокирование работы аплета на время загрузки звукового файла, загрузку и
проигрывание следует выполнять в отдельной задаче.
Интерфейс AudioClip определен следующим образом:
public interface java.applet.AudioClip
{
public abstract void play();
public abstract void loop();
public abstract void stop();
}
Метод play запускает однократное проигрывание звукового файла, которое
выполняется от начала файла и до его конца.
Метод loop запускает проигрывание звукового файла в цикле, которое будет
продолжаться до тех пор, пока вы не остановите его, вызвав метод stop.
Метод stop, как нетрудно догадаться из его названия, останавливает
проигрывание звукового файла, как однократное, так и выполняемое в цикле.
Приложение Audio
Приложение Audio демонстрирует использование интерфейса AudioClip. В его
окне (рис. 5.1) имеются три кнопки с названиями Play, Loop и Stop.
Рис. 5.1. Окно аплета Audio
Сразу после запуска аплета кнопка Stop находится в заблокированном состоянии.
Если нажать кнопку Play или Loop, начнется, соответственно, однократное
проигрывание или проигрывание в цикле файла с именем kaas.au, распложенного в
том же каталоге, что и двоичный файл аплета Audio.
Когда начинается проигрывание звукового файла, кнопка Stop разблокируется,
что позволяет остановить проигрывание.
Исходные тексты приложения
Основной файл исходных текстов приложения приведен в листинге 5.1.
Листинг 5.1. Файл Audio\ Audio.java
// =========================================================
// Проигрывание аудиофайла
//
// (C) Фролов А.В, 1997
//
// E-mail: [email protected]
// WWW: http://www.glasnet.ru/~frolov
// или
// http://www.dials.ccas.ru/frolov
// =========================================================
import java.applet.*;
import java.awt.*;
public class Audio extends Applet
{
// -------------------------------------------------------
// Поля класса.
// Создаются автоматически для всех параметров аплета
// -------------------------------------------------------
// Строка для хранения имени аудиофайла
private String m_ClipName = "kaas.au";
// -------------------------------------------------------
// Имена параметров
// -------------------------------------------------------
// Строка имени параметра
private final String PARAM_ClipName = "ClipName";
// Аудиоклип
AudioClip auClip;
// Кнопка для однократного проигрывания
Button btPlay;
// Кнопка для проигрывания в цикле
Button btLoop;
// Кнопка для остановки проигрывания
Button btStop;
// Флаг проигрывания в цикле
boolean fLoopPlay = false;
// -------------------------------------------------------
// getAppletInfo
// Метод, возвращающей строку информации об аплете
// -------------------------------------------------------
public String getAppletInfo()
{
return "Name: Audio\r\n" +
"Author: Alexandr Frolov\r\n" +
"E-mail: [email protected]" +
"WWW: http://www.glasnet.ru/~frolov" +
"Created with Microsoft Visual J++ Version 1.0";
}
// -------------------------------------------------------
// getParameterInfo
// Метод, возвращающий описание параметров
// -------------------------------------------------------
public String[][] getParameterInfo()
{
String[][] info =
{
{ PARAM_ClipName, "String", "Audioclip filename" },
};
return info;
}
// -------------------------------------------------------
// init
// Вызывается во время инициализации аплета
// -------------------------------------------------------
public void init()
{
// Рабочая переменная для получения параметров
String param;
// Получение параметров и сохранение
// их значений в полях класса
// Получение имени аудиофайла
param = getParameter(PARAM_ClipName);
if (param != null)
m_ClipName = param;
// Создаем кнопку для однократного проигрывания
btPlay = new Button("Play");
// Создаем кнопку для проигрывания в цикле
btLoop = new Button("Loop");
// Создаем кнопку для остановки проигрывания
btStop = new Button("Stop");
// Блокируем эту кнопку, так как пока еще
// проигрывание не запущено
btStop.disable();
// Добавляем кнопки в окно а
|
|