Реалізація анімації і відтворення звуку

Содержание

Слайд 2

ОЧІКУВАННЯ ЗАВАНТАЖЕННЯ ЗОБРАЖЕНЬ

Необхідність введення класів очікування завантаження зображення:
Завантаження зображень -

ОЧІКУВАННЯ ЗАВАНТАЖЕННЯ ЗОБРАЖЕНЬ Необхідність введення класів очікування завантаження зображення: Завантаження зображень -
тривалий процес (зображення завантажуються навігатором в окремій задачі).
Якщо файл зображення має велику довжину, воно з'являтиметься у вікні поступово у міру завантаження (може малювати відразу декілька зображень в різних місцях вікна або показувати їх по черзі в одному і тому ж місці для анімації).
Доцільно завантажити зображення повністю, а лише потім виконувати малювання, щоб зображення з'явилося на екрані відразу.

Слайд 3

Два способи визначити, коли зображення завантажене повністю:
1) використання класу MediaTracker;
2)

Два способи визначити, коли зображення завантажене повністю: 1) використання класу MediaTracker; 2) перевизначення методів інтерфейсу ImageObserver.
перевизначення методів інтерфейсу ImageObserver.

Слайд 4

ЗАСТОСУВАННЯ КЛАСУ MediaTracker

Створення об'єкту класу
MediaTracker mt;
mt = new MediaTracker(this);
// посилання

ЗАСТОСУВАННЯ КЛАСУ MediaTracker Створення об'єкту класу MediaTracker mt; mt = new MediaTracker(this);
на компонент, для якого необхідно
// відстежувати завантаження зображень.

!!! Тобто, ми просто готуємо “диспетчера” і скажемо йому,
за ким (за якими картинками) він далі буде спостерігати.

Слайд 5

Додавання зображень в об'єкт класу MediaTracker
addImage()
Наприклад,
Image img1, img2, img3, img4;
// спочатку

Додавання зображень в об'єкт класу MediaTracker addImage() Наприклад, Image img1, img2, img3,
треба створити всі необхідні зображення
img1 = getImage(getCodeBase(), "pic1.gif");
img2 = getImage(getCodeBase(), "pic2.gif");
img3 = getImage(getCodeBase(), "pic3.gif");
img4 = getImage(getCodeBase(), "pic4.gif");
// далі додати їх в об'єкт MediaTracker
mt.addImage(img1, 0);
mt.addImage(img2, 0);
mt.addImage(img3, 1);
mt.addImage(img4, 1);
// другий параметр – номер групи зображень

Слайд 6

Очікування завантаження доданих зображень
(щоб переконатися, що всі зображення завантажені)
void

Очікування завантаження доданих зображень (щоб переконатися, що всі зображення завантажені) void waitForAll()
waitForAll()
Наприклад,
try { mt.waitForAll();
. . .
}
catch (InterruptedException ex)
{ . . . }
boolean waitForAll (long ms)
boolean waitForID (int id, long ms);
// повертають true, якщо за вказаний час всі зображення були
// успішно завантажені

Слайд 7

Перевірка завершення завантаження
boolean checkAll(boolean load);
boolean checkID(int id);
boolean checkID(int id, boolean

Перевірка завершення завантаження boolean checkAll(boolean load); boolean checkID(int id); boolean checkID(int id,
load);
// Якщо load = true, завантаження зображень ініціюється,
// якщо false - тільки перевірка поточного стану завантаження.

Слайд 8

Стеження за процесом завантаження
int statusAll (boolean load);
int statusID (int id, boolean load);

Стеження за процесом завантаження int statusAll (boolean load); int statusID (int id, boolean load);

Слайд 9

Обробка помилок
boolean isErrorAny();
boolean isErrorID (int id);
Object[] getErrorsAny ();
Object[] getErrorsID (int id);

Обробка помилок boolean isErrorAny(); boolean isErrorID (int id); Object[] getErrorsAny (); Object[] getErrorsID (int id);

Слайд 10

ЗАСТОСУВАННЯ КЛАСУ ImageObserver

Використовується для відстежування процесу завантаження і перемальовування зображень і інших

ЗАСТОСУВАННЯ КЛАСУ ImageObserver Використовується для відстежування процесу завантаження і перемальовування зображень і
компонент, розташованих усередині даного компоненту.
Клас Component реалізує його. Слід перевизначити метод
boolean imageUpdate (Image img,
int flags, int x, int у, int w, int h);
flags – відображає стан бітів зображення

Слайд 11

flags – відображає стан бітів зображення

flags – відображає стан бітів зображення

Слайд 12

Додаток (аплет) повинен передати останньому параметру метода drawImage() посилання на інтерфейс ImageObserver,

Додаток (аплет) повинен передати останньому параметру метода drawImage() посилання на інтерфейс ImageObserver,
який буде відстежувати
процес завантаження:
g.drawImage (Img, x, у, w, h, this);

Слайд 13

Приклад перевантаженого методу imageUpdate()
public boolean imageUpdate (Image im,int flags, int x,

Приклад перевантаженого методу imageUpdate() public boolean imageUpdate (Image im,int flags, int x,
int у, int w, int h)
{
// Перевіряємо, чи все біти зображення завантажені
fAllLoaded = ((flags & ALLBITS) != 0); // Якщо все, перемальовуємо вікно
if(fAllLoaded) repaint();
// Якщо всі біти завантажені,
// подальші виклики цього методу не потрібні
return (!fAllLoaded);
}

Слайд 14

УСУНЕННЯ МЕРЕХТІННЯ

Перевантажити метод update(). Процес перемальовування вікна аплета займає більше часу, ніж

УСУНЕННЯ МЕРЕХТІННЯ Перевантажити метод update(). Процес перемальовування вікна аплета займає більше часу,
період розгортання зображення по вертикалі на екрані монітора. Тому зображення з'являється у вікні в декілька прийомів
Замість того, щоб періодично викликати метод repaint(), можна малювати в потоці, тобто малювати в методі run().
Метод подвійної буферизації: зображення малюється не у вікні, а готується в оперативній пам'яті і потім, уже готове, виводиться у вікно, - процес підготовки не видимий користувачу.

Слайд 15

Реалізація подвійної буферизації
……
Image Img;
Graphics grImg;
Dimension Dim = null;
public

Реалізація подвійної буферизації …… Image Img; Graphics grImg; Dimension Dim = null;
void paint(Graphics g)
{
if (Img != null) g.drawImage(Img,0,0,null);
}
public void update(Graphics g)
{ // Визначаємо розміри вікна аплета
Dimension dim = getSize();
int W = dim.width;
int H = dim.height;

Слайд 16

// якщо зображення немає, то створюємо пусте розміром з вікно
if ((Dim==null)||(Dim.width!=W)||(Dim.height!=H))

// якщо зображення немає, то створюємо пусте розміром з вікно if ((Dim==null)||(Dim.width!=W)||(Dim.height!=H))
{ Dim = new Dimension(applW,applH);
Img = createImage(applW, applH);
grImg = Img.getGraphics();
}
Color fg = getForeground(); // беремо колір тексту
Color bg = getBackground(); // беремо колір фону
grImg.setColor(bg); // встановлюємо такий фон в памяті
grImg.fillRect(0,0,imgDim.width,imgDim.height);
grImg.setColor(fg); // встановлюємо колір малювання
grImg.drawString(“Hello”,pos,40);// малюємо в пам'яті
position--;
if (position <= 0)
position = size().width;
paint(g);
}

Слайд 17

ВІДТВОРЕННЯ ЗВУКУ
AudioClip ac;
ac=Applet.newAudioClip(new URL("file:spacemusic.au"));

!!! Обов’язкова обробка виключних ситуацій.

ВІДТВОРЕННЯ ЗВУКУ AudioClip ac; ac=Applet.newAudioClip(new URL("file:spacemusic.au")); !!! Обов’язкова обробка виключних ситуацій.
Имя файла: Реалізація-анімації-і-відтворення-звуку.pptx
Количество просмотров: 19
Количество скачиваний: 0