Воспроизведение слайд-шоу и анимации
Используйте примеры, чтобы проиллюстрировать, как воспроизводить слайды и анимацию.
[Пример] Небольшое приложение сначала считывает слайды в массив и сохраняет их, затем щелкает мышью, чтобы изменить слайды и отобразить их один за другим.
import java.applet.*import java.awt.*;import java.awt.event.*;публичный класс. ] карта = новое изображение [номер]; общественный недействительный init () { addMouseListener (это); для (int я = 0; я <номер; я ++) {карта [я] = getImage(getCodeBase(), "DSC0033" + i + ".jpg"); } } public voidpaint(Graphics g){ if ((card[count]) != null) g.drawImage(card[count], 10 , 10, card[count].getWidth(this),card[count].getHeitht(this), this } public void); mousePressed (MouseEvent e) { count = (count + 1) % Number; // Цикл и отображение repaint () } public void mouseRelease (MouseEvent e) {} public void mouseEntered (MouseEvent e) {} public void mouseExited (Mouse Event); e){} public void mouseClicked(MouseEvent e){}}
[Пример] Апплет объясняет, как воспроизводить анимацию. Требуется, чтобы изображения воспроизводились, а апплет был помещен в один и тот же каталог. Программа создает эффект отображения анимации путем быстрого отображения группы изображений. Небольшое приложение использует потоки для управления отображением анимированных изображений одно за другим.
import java.applet.*;import java.awt.*;import java.awt.event.*;публичный класс Пример7_8 расширяет реализацию апплета Runnable{ Final int Number = 50; Int Count = 0; новое изображение [номер]; общественный недействительный init () { setSize (300, 200); для (int я = 0; я <= число; я ++) { //Загрузка анимированных изображений pic[i - 1] = getImage(getCodeBase(), "DSC0033" + i + ".jpg"); } } public void start(){myread = new Thread(this); threadmythread.start(); //Начать выполнение потока} public void stop(){mythread = null } public void run(){ //Код выполнения потока while (true){ repaint(); = (count + 1) % Number; //Изменить номер отображаемого изображения. try{ mhythread.sleep(200); != null) g.drawImage(pic[count], 10, 10, pic[count].getwidth(this), pic[count].getHeight(this), этот); }}
воспроизвести звук
В старой базе языка Java есть множество аудиоформатов: au, aiff, wav, midi, rfm и т.д. Для воспроизведения аудиофайлов в апплете вы можете использовать класс AudioClip, который определен в библиотеке классов java.applet.AudioClip. Аплет сначала создает объект AudioClip и инициализирует его с помощью метода getAudioClip(). Форма кода следующая:
AudioClip audioClip = getAudioClip(getCodeBase(),"myAudioClipFile.au");
Если вы хотите получить аудиофайл из Интернета, вы можете использовать метод getAudioClip(URL url, String name) для получения воспроизводимого аудиообъекта на основе URL-адреса и имени аудиофайла.
Существует три метода управления воспроизведением звука: play() для воспроизведения звука, цикл() для зацикливания воспроизведения и stop() для остановки воспроизведения.
[Пример] Небольшое приложение, которое может воспроизводить звуки.
import java.applet.*;import java.awt.*;import java.awt.event.*;public класс Пример7_9 расширяет апплет, реализует ActionListener{ AudioClip clip; //Объявляем аудиообъект ButtonPlay, buttonLoop, buttonStop public void init; (){ clip = getAudioClip(getCodeBase(), "2.wav"); //Создаем аудиообъект на основе звукового файла 2.wav по адресу программы, //Метод getCodeBase() класса Applet может получить URL-адрес html-страницы, на которой расположен апплет. buttonPlay = new Button("Начать воспроизведение"); buttonLoop = new Button("Циклическое воспроизведение"); buttonStop = new Button("Прекратить воспроизведение"); buttonPlay.addActionListener(this); buttonStop.addActionListener(this); (это); добавить (buttonPlay); добавить (buttonStop); //Остановить воспроизведение, покинув эту страницу} public void actionPerformed(ActionEvent e){ if (e.getSource() == buttonPlay){ clip.play() } else if (e.getSource() == buttonLoob){ clip .loop(); } else if (e.getSource() == buttonStop){ clip.stop() } }};
[Пример] Если звуковой файл большой или скорость сети низкая, это повлияет на инициализацию мини-программы. Эту проблему можно решить с помощью многопоточной технологии. Создание аудиообъекта завершается в потоке нижнего уровня, то есть звуковой файл загружается в фоновом режиме и воспроизводится на переднем плане.
import java.applet.*;import java.awt.*;import java.awt.event.*;public class Hanoi расширяет реализацию апплета Runnable, ActionListener{ AudioClip clip; //Объявляем аудиообъект textField Thread thread; , buttonLoop, buttonStop; public void init() { thread = new Thread(this); //Создаем новый поток .setPriority(Thread.MIN_PRIORITY); buttonPlay = new Button("Начать игру"); buttonLoop = new Button("Циклическое воспроизведение"); buttonStop = new Button("Stop play"); text = new textField(12); .addActionListener(это); buttonStop.addActionListener(это); buttonLoop.addActionListener(this); add(buttonPlay); add(buttonLoop); add(text); } public void start() { thread.start(); } public void stop() { clip.stop(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == buttonPlay(){ clip.play(); } else if (e.getSource() == buttonLoop(){ clip.loop(); } else if (e.getSource() == buttonStop(){ clip.stop(); } } public void run(){ //Создаем клип аудиообъекта в потоке thread = getAudioclip(getCodeBase(), "2.wav"); text .setText("Пожалуйста, подождите"); if(clip ! = null){ buttonPlay.setBackground(Color.red); buttonLoop.setBackground(Color.green); text.setText("Вы можете играть"); } //После получения аудиообъекта уведомление можно воспроизвести.}}