Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² JavaScript для Мага». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 12

Автор Π‘Ρ‚Π΅Ρ„Π°Π½ ΠšΠΎΡ…

if (direction) pos++

else pos-;

document.layers["myLayer2"].left= pos;

}

// β€” >

</script>

</head>

<body onLoad="setInterval('move(), 20)">

<ilayer name=myLayer2 left=0>

<font size=+1 color="#0000ff"><i>This text is inside a layer</i></font>

</ilayer>

</body>

</html>


ΠœΡ‹ создаСм слой с ΠΈΠΌΠ΅Π½Π΅ΠΌ myLayer2. МоТно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² тэгС <body>ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ onLoad. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π½ΠΈΠ΅ слоя, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ страница Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π°. Π’ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события onLoad ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ setInterval(). Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² вСрсии 1.2 языка JavaScript (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ вСрсии JavaScript, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² Netscape Navigator 4.0). Им ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ мвновь ΠΈ вновь Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ для этого ΠΌΡ‹ пользовались Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ setTimeout(). Ѐункция setInterval() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π΅ всСго лишь ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ setInterval() ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ move() ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 20 миллисСкунд. А функция move(), Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, всякий Ρ€Π°Π· смСщаСт слой Π½Π° Π½ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. И ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ вновь ΠΈ вновь, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ быстрый скроллинг нашСго тСкста. ВсС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ move() β€” это Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ для слоя ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π΅: document.layers["myLayer2"].left= pos.

Если Π’Ρ‹ посмотритС исходный ΠΊΠΎΠ΄ этой части Π² ΠΎΠ½Π»Π°ΠΉΠ½ΠΎΠ²ΠΎΠΌ описании, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ выглядит нСсколько ΠΈΠ½Π°Ρ‡Π΅ β€” я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π½Π΅ΠΊΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ люди, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ со старыми вСрсиями JavaScript-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ ΠΈΠ·-Π·Π° этого Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Как этого ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ? Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚Π΅Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ язык JavaScript 1.2:


<script language="JavaScript1.2">

<!- hide

document.write("Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, совмСстимый с JavaScript 1.2.");

// β€” >

</script>


Π’Π° ΠΆΠ΅ самая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Image. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ способом ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ кодСкс. Установка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ browserOK Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π½ΠΈΠ΅ слоСв:

ВСкст Π²Π½ΡƒΡ‚Ρ€ΠΈ слоя

Π§Π°ΡΡ‚ΡŒ 10: Π‘Π»ΠΎΠΈ II

ΠœΡ‹ ΡƒΠΆΠ΅ обсудили основныС понятия Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ слоСв. Π’ этой ΠΆΠ΅ части Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹:

Β· Π’Ρ‹Ρ€Π΅Π·ΠΊΠ° ΠΈΠ· слоя

Β· Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ слои

Β· Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ эффСкты с ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌΠΈ слоями


Π’Ρ‹Ρ€Π΅Π·ΠΊΠ° ΠΈΠ· слоя


МоТно ΠΏΠΎΡΡ‚ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ какая-Ρ‚ΠΎ (ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ) Ρ‡Π°ΡΡ‚ΡŒ слоя Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌ Π²ΠΈΠ΄ΠΈΠΌΠ°. ВсС ΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π»Π΅ΠΆΠΈΡ‚ Π·Π° Π΅Π΅ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° экранС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ называСтся Π²Ρ‹Ρ€Π΅Π·Π°Π½ΠΈΠ΅ΠΌ. НапримСр, Π² Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ΅ HTML ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ вырСзания:

<ilayer left=0 top=0 clip="20,50,110,120">

<img src="davinci.jpg" width=209 height=264>

</ilayer>

(Π—Π΄Π΅ΡΡŒ я приписал ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ left=0 ΠΈ top=0, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли этого Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ с ΠΌΠΎΠ΅ΠΉ вСрсиСй Netscape (PR3 on WinNT) Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹)

Π₯отя само ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ 209x264 пиксСлов, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ лишь Π΅Π³ΠΎ ΠΌΠ°Π»ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ:

Π”Π°Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ изобраТСния ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 90x70 (пиксСлов). ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° значСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ clip (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ HTML-тэга <layer> ΠΈΠ»ΠΈ <ilayer>), ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» Π²Ρ‹Ρ€Π΅Π·Π°Π΅ΠΌΠΎΠΉ части. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° значСния ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ». Π‘ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ рисунком:


Π•Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ интСрСсных Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, управляя Π²Ρ‹Ρ€Π΅Π·Π°Π½Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка JavaScript. Π’ΠΎΡ‡Π½Π΅Π΅, Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния свойств clip.left, clip.top, clip.right ΠΈ clip.bottom ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Layer. Достаточно всСго лишь занСсти Π² ΠΎΠ΄Π½ΠΎ ΠΈΠ· этих свойств Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Π΄Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Ρ‹Ρ€Π΅Π·Π°Π½Π½ΠΎΠΉ части изобраТСния ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ динамичСски, ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ создаСтся Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Π±ΡƒΠ΄Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ «растСт»:



Код ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΠ²ΡƒΡŽΡ‰Π΅Π³ΠΎ скрипта:


<html>

<head>

<script language="JavaScript">

<!- hide

var middleX, middleY, pos;

function start() {

// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈ\я

var width= document.layers["imgLayer"].document.davinci.width;

var height= document.layers["imgLayer"].document.davinci.height;

// ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ пиксСл находитс\я Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈ\я

middleX= Math.round(width/2);

middleY= Math.round(height/2);

// Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ·ΠΈΡ†ΠΈ\я

pos= 0;

// запуск!

show();

}

function show() {

// ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‹Ρ€Π΅Π·Π°Π΅ΠΌΠΎΠΉ области

pos+= 2; // step size

document.layers["imgLayer"].clip.left= middleX- pos;

document.layers["imgLayer"].clip.top= middleY- pos;

document.layers["imgLayer"].clip.right= middleX+ pos;

document.layers["imgLayer"].clip.bottom= middleY+ pos;

// ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ высвСчСно Π»ΠΈ всС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

if (!((pos > middleX) && (pos > middleY)))

setTimeout("show()", 20);

}

// β€” >

</script>

</head>

<body>

<ilayer name="imgLayer" clip="0,0,0,0">

<img name=davinci src="davinci.jpg" width=209 height=264>

</ilayer>

<form>

<input type=button value="Start" onClick="start()">

</form>

</body>

</html>


Кнопка, прСдставлСнная Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ <body>, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ start(). Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΌ слСдуСт Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ β€” фактичСски это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΊΠΈΠΉ пиксСл Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ нашСго изобраТСния. ЗначСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ x ΠΈ y этого пиксСла ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ middleX ΠΈ middleY. ПослС этого ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ show(), которая Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Ρ€Π΅Π·Π°Π΅ΠΌΠΎΠΉ части изобраТСния Π² зависимости ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… middleX, middleY ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° pos. ΠŸΡ€ΠΈ этом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ pos автоматичСски увСличиваСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ show(). Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‹Ρ€Π΅Π·Π°Π΅ΠΌΠΎΠΉ части изобраТСния с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Ρ€Π°Π·ΠΎΠΌ становится всС большС ΠΈ большС. Π’ самом ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ show() ΠΌΡ‹ устанавливаСм Ρ‚Π°ΠΉΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° setTimeout() β€” ΠΈ благодаря этому функция show() вызываСтся вновь ΠΈ вновь. И этот процСсс остановится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ изобраТСния ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π² самом Π½Π°Ρ‡Π°Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ start():

var width= document.layers["imgLayer"].document.davinci.width;

var height= document.layers["imgLayer"].document.davinci.height;

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции document.layers["imgLayer"] ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ слою с ΠΈΠΌΠ΅Π½Π΅ΠΌ imgLayer. Однако ΠΏΠΎΡ‡Π΅ΠΌΡƒ послС document.layers["imgLayer"] ΠΌΡ‹ ставим document? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ слой ΠΈΠΌΠ΅Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ HTML-страницу β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ слой ΠΈΠΌΠ΅Π΅Ρ‚ свой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ document. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ слоя imgLayer, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ этому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ document. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ носило Π½Π°Π·Π²Π°Π½ΠΈΠ΅ davinci. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ листа Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ чистым.


Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ слои


Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, слой ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Он ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°ΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя Π΄Ρ€ΡƒΠ³ΠΈΠ΅ слои. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вопрос, для Ρ‡Π΅Π³ΠΎ это Π½ΡƒΠΆΠ½ΠΎ. На самом Π΄Π΅Π»Π΅ Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ слоями. Рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… слоСв.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ слой (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ parentLayer), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π»ΠΎΠΆΠ΅Π½ΠΎ Π΅Ρ‰Π΅ Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… слоя (layer1 ΠΈ layer2).

ПослС открытия страницы ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‚Ρ€ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π­Ρ‚ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ слоСв. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ слоя parentLayer сопровоТдаСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… слоСв, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ слоя layer1 (ΠΈΠ»ΠΈ layer2) Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π΅ влияСт. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ объСдинСния Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… слоСв.

Рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ исходный ΠΊΠΎΠ΄ скрипта:


<html>

<head>

<script language="JavaScript">

<!- hide

// Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°\я ΠΏΠΎΠ·ΠΈΡ†ΠΈ\я

var pos0= 0;

var pos1= -10;

var pos2= -10;

// Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅?

var move0= true;

var move1= false;

var move2= false;

// Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅?

var dir0= false;

var dir1= false;

var dir2= true;

function startStop(which) {

if (which == 0) move0=!move0;

if (which == 1) move1=!move1;

if (which == 2) move2=!move2;

}

function move() {

if (move0) {

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ parentLayer

if (dir0) pos0-

else pos0++;

if (pos0 < -100) dir0= false;

if (pos0 > 100) dir0= true;

document.layers["parentLayer"].left= 100 + pos0;

}

if (move1) {

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ parentLayer

if (dir1) pos1-

else pos1++;

if (pos1 < -20) dir1= false;

if (pos1 > 20) dir1= true;

document.layers["parentLayer"].layers["layer1"].top= 10 + pos1;

}

if (move2) {

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ parentLayer

if (dir2) pos2-

else pos2++;

if (pos2 < -20) dir2= false;

if (pos2 > 20) dir2= true;

document.layers["parentLayer"].layers["layer2"].top= 10 + pos2;

}

}

// β€” >

</script>

</head>