Аплет PlayClip
Аплет PlayClip демонстрирует использование интерфейса AudioClip. В его окне (рис. 1) имеются три кнопки с названиями Play, Loop и Stop.
Рис. 1. Окно аплета PlayClip Сразу после запуска аплета кнопка Stop находится в заблокированном состоянии. Если нажать кнопку Play или Loop, начнется, соответственно, однократное проигрывание или проигрывание в цикле файла с именем kaas.au, распложенного в том же каталоге, что и двоичный файл аплета PlayClip. Когда начинается проигрывание звукового файла, кнопка Stop разблокируется, что позволяет остановить проигрывание. Исходные тексты приложенияОсновной файл исходных текстов приложения приведен в листинге 1. Листинг 1. Файл PlayClip.java import java.applet.*; import java.awt.*; public class PlayClip 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;
public String getAppletInfo()
{
return "Name: PlayClip";
}
public String[][] getParameterInfo()
{
String[][] info =
{
{
PARAM_ClipName,
"String",
"Audioclip filename"
},
};
return info;
}
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(); add(btPlay);
add(btLoop);
add(btStop);
auClip = this.getAudioClip(getCodeBase(),
m_ClipName);
}
public boolean action(Event evt,
Object obj)
{
Button btn;
if(evt.target instanceof Button)
{
btn = (Button)evt.target;
if(evt.target.equals(btPlay))
{
auClip.play();
btStop.enable();
}
else if(evt.target.equals(btLoop))
{
auClip.loop();
fLoopPlay = true;
btStop.enable();
}
else if(evt.target.equals(btStop))
{
auClip.stop();
fLoopPlay = false;
btStop.disable();
}
else
{
return false;
}
return true;
}
return false; } public void paint(Graphics g)
{
Dimension dimAppWndDimension = size();
g.setColor(Color.yellow);
g.fillRect(0, 0,
dimAppWndDimension.width - 1,
dimAppWndDimension.height - 1);
g.setColor(Color.black);
g.drawRect(0, 0,
dimAppWndDimension.width - 1,
dimAppWndDimension.height - 1);
}
public void start()
{
if(fLoopPlay)
auClip.loop();
}
public void stop()
{
if(fLoopPlay)
auClip.stop();
}
}
В листинге 2 вы найдете исходный текст документа HTML, созданного автоматически для нашего приложения системой Java WorkShop. Листинг 2. Файл PlayClip.tmp.html <applet name="PlayClip" code="PlayClip" codebase= "file:/e:/sun/articles/vol14/src/PlayClip" width="200" height="100" align="Top" alt="If you had a java-enabled browser, you would see an applet here."> <param name="ClipName" value="kaas.au"> <hr> If your browser recognized the applet tag, you would see an applet here. <hr> </applet> В главном классе аплета определено несколько полей и методов. Рассмотрим эти поля и наиболее важные методы. Поля класса PlayClipВ поле m_ClipName хранится имя звукового файла, которое передается через параметр ClipName из документа HTML. По умолчанию для этого параметра используется значение kaas.au. Строка PARAM_ClipName хранит имя указанного выше параметра. Ссылка на интерфейс AudioClip хранится в поле auClip: AudioClip auClip; Следующие три поля хранят ссылки на кнопки, предназначенные для управления проигрыванием звукового файла: Button btPlay; Button btLoop; Button btStop; Поле fLoopPlay типа boolean используется для флага, которым отмечается режим проигрывания звукового файла в цикле. Метод getParameterInfoМетод getParameterInfo возвращает описание единственного параметра нашего аплета, через который передается имя звукового файла. Метод initСразу после запуска аплета метод init получает значение параметра - имя звукового файла, и если этот параметр задан в документе HTML, записывает полученное имя в поле m_ClipName: param = getParameter(PARAM_ClipName); if(param != null) m_ClipName = param; Далее создаются три кнопки, управляющие звучанием аплета: btPlay = new Button("Play");
btLoop = new Button("Loop");
btStop = new Button("Stop");
Кнопка Stop блокируется, так как на данный момент проигрывание еще не запущено: btStop.disable(); Для блокирования вызывается метод disable, определенный в классе Button. Подготовленные таким образом кнопки добавляются в окно аплета: add(btPlay); add(btLoop); add(btStop); Последнее, что делает метод init перед тем как возвратить управление, это получение ссылки на интерфейс AudioClip: auClip = this.getAudioClip( getCodeBase(),m_ClipName); Адрес URL каталога, в котором расположен аплет, определяется с помощью метода getCodeBase, о котором мы говорили в предыдущей главе. Метод actionМетод action получает управление, когда пользователь нажимает на одну из кнопок, расположенных в окне аплета. В зависимости от того, какая именно кнопка была нажата, выполняются различные действия. Если пользователь нажал кнопку Play, вызывается метод play для запуска однократного проигрывания звукового файла: auClip.play(); btStop.enable(); Сразу после того как проигрывание будет запущено, приложение разблокирует кнопку Stop, предоставляя пользователю возможность прервать звучание. В том случае, когда пользователь нажал кнопку Loop, вызывается метод loop, запусчкающий проигрывание звукового файла в цикле: auClip.loop(); fLoopPlay = true; btStop.enable(); После запуска устанавливается флаг fLoopPlay и разблокируется кнопка Stop. И, наконец, если пользователь нажимает кнопку Stop, выполняется остановка проигрывания методом stop: auClip.stop(); fLoopPlay = false; btStop.disable(); Флаг fLoopPlay сбрасывается, после чего кнопка Stop блокируется. Метод startМетод start получает управление при первом запуска аплета, а также когда страница документа появляется вновь после того как пользователь временно переходил к просмотру другой страницы. Наша реализация метода start возобновляет циклическое проигрывание, если оно выполнялось, когда пользователь покинул страницу с аплетом: if(fLoopPlay) auClip.loop(); Метод stopЕсли пользователь запустил проигрывание звукового файла в цикле, а затем перешел к просмотру другой страницы, метод stop останавливает циклическое проигрывание: if(fLoopPlay) auClip.stop(); Когда пользователь вернется к просмотру нашей страницы, метод start, описанный выше, возобновит проигрывание звукового файла. Поделитесь этой записью или добавьте в закладки |
Полезные публикации |

Главная