Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи мови JavaScript.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.04 Mб
Скачать

5.2.3. Чекання завантаження всіх зображень

Якщо необхідно розмістити в документі HTML анімаційне зображення, що складається з окремих кадров, що, у свою чергу, розташовані в окремих файлах, виникає одна проблема. Вона пов'язана з непередбачуваністю часу завантаження всіх зображень анімаційної послідовності через повільний і нестабильный канал Internet.

Щоб анімаційне зображення було показано без перекручуванні, необхідно спочатку дочекатися завершення процесу завантаження файлів окремих кадров і лише потім запускати анимацию.

У листинге 5.3 приведений вихідний текст документа HTML із сценарієм, що працює подібною уявою.

Листинг 5.3. Файл chapter5/noise/noise2. html

<HTML>

<HEAD>

<TITLE>Animation with JavaScript</TITLE>

var nNumberOfImages = 18;

var i=1;

var bForward=true;

var imgArray = new Array(18);

function loadAlllmages(nNumberOfImages)

{

var i;

for(i=0; i<nNumberOfImages; i++)

{

imgArray[i] = newImage();

imgАггау[i].srс = "img0" + (i+1) + ".gif"; }

}

function showNextImage()

{

if(bForward)

i++;

if(i > 17)

{

bForward=false;

}

}

else

{

i--;

if(i < 2)

{

bForward=true;

}

}

document.lmg.src = imgArray[i-1].src;

setTimeout("showNextImage()", 100);

}

//-->

</SCRIPT>

</HEAD>

<BODY BGCOLOR=white>

<IMC SRC="img01.gif" NAME="Img">

<SCRIPT LANGUAGE="JavaScript">

<!--

loadAllImages(nNumberOfImages);

showNextImage();

//-->

</SCRIPT>

</B0DY>

</HTML>

У тілі документа HTML розташований сценарій, що викликає послідовно функції loadAllImages і showNextImage:

loadAllImages(nNumberOfImages);

showNextImage();

Функції loadAllImages у якості параметра передається загальна кількість зображень в анімаційній послідовності. У нашому випадку воно дорівнює 18.

Задача функції loadAllImages полягає в заповненні масиву об'єктів класу Image. Цей масив визначений в області заголовка документа HTML:

var imgArray = new Array(18);

Заповнення масиву виконується в циклі

var i;

for(i=0; i<nNumberOfImages; i++)

{

imgArray[i] = new Image();

imgArray[i]. src = "img" + (i+1) + ". gif";

}

Для кожного елемента масиву спочатку за допомогою ключового слона new створюється об'єкт класу Image, а потім установлюється значення властивості src цього об'єкта. Остання операція і призводить до инициированию завантаження файла зображення, виконуваної асинхронно.

Після того як масив заповнений, можна викликати функцію showNextImage. Вона ідентична описаної в попередньому прикладі, за винятком того, що для установки властивості src зображення Img використовуються елементи заздалегідь підготовленого масиву imgArray:

document. Img. src = imgArray[i-1]. src;

6. Взаємодія з аплетами java

Можна сказати, що сценарії JavaScript служать як би цементом для зв'язування різноманітних об'єктів, розташованих у документі HTML. Наприклад, за допомогою JavaScript можна опрацьовувати дані, отримані з полів однієї форми, і відображати результати опрацювання в полях тієї ж самої або іншої форми.

Ще одна цікава можливість взаємодії сценаріїв JavaScript з об'єктами документа HTML, що варто роздивитися, - це зв'язок сценаріїв і аплетов Java. Надається, із сценаріїв JavaScript можна обертатися до полів і методів аплетов Java.

Мові програмування Java присвячена третя частина даного курсу, що називається "Програмування в Internet. Частина 3. Основи мови Java". Перед тим як вивчати главу курсу "Взаємодія з аплетами Java", рекомендується ознайомитися з цією частиною.