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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Adobe Flash. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Ρ€ΠΊΠ°Π΄, Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΎΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ³Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ActionScriptΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 26

Автор Гэри Π ΠΎΠ·Π΅Π½Ρ†Π²Π΅ΠΉΠ³

screenx += 275;

screeny += 200;

(11) β†’ // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹.

return({x:screenx,y:screeny,z:screenz});...

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Ѐункция Math. atan () ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ линию Π² ΡƒΠ³ΠΎΠ» Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…. НСобходимо ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΆΠ΅ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ. НапримСр, Ссли значСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π΅ΠΊ Π»ΠΈΠ½ΠΈΠΈ соотвСтствСнно Ρ€Π°Π²Π½Ρ‹ (200, 200) ΠΈ (275, 250), Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠ³ΠΎΠ», Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Math.atan(75/50) . Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .9828 Ρ€Π°Π΄ΠΈΠ°Π½, Ρ‡Ρ‚ΠΎ составляСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 56Β°. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ функция Math.atan() Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ обшСС прСдставлСниС ΠΎ Π½Π΅ΠΉ.

ОпишСм ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

(1)  Π—Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x, Ρƒ ΠΈ z ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

(2) ВычисляСтся расстояниС Π½Π° плоскости xy ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π΄ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ.

(3) ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ ΡƒΠ³ΠΎΠ» Π½Π° плоскости xy.

(4) Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠ³Π»Π° увСличиваСтся Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

(5) Π—Π°Π΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x, Ρƒ ΠΈ z с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ измСнСния ΡƒΠ³Π»Π°.

(6) ЗадаСтся расстояниС ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π΄ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° плоскости yz.

(7) ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ ΡƒΠ³ΠΎΠ» Π½Π° плоскости yz.

(8) ЗадаСтся Π½Π°ΠΊΠ»ΠΎΠ½ плоскости.

(9) Π—Π°Π΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x, Ρƒ ΠΈ z с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π½Π°ΠΊΠ»ΠΎΠ½Π°.

(10)  Π¦Π΅Π½Ρ‚Ρ€ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0. Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊ Π½ΠΈΠΌ прибавляСтся Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‚Ρ€Π° экрана (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС (275, 200)).

(11)  Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x ΠΈ Ρƒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для отобраТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° экранС. Π‘ помошью ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ z ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΡ€ΠΊΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ располоТСнными дальшС ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Ѐункция plotPoint ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ с Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Π² Ρ‚ΠΎΡ‡ΠΊΠΈ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΈ помоши ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрспСктива здСсь Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π°Ρ…ΠΎΠ΄ΡΡˆΠΈΠ΅ΡΡ Π½Π° дальнСм ΠΏΠ»Π°Π½Π΅, Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для модСлирования Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… эффСктов, Π½ΠΎ Π½Π΅ годится для создания Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… сцСн.

Π£Π³Π»Ρ‹ ΠΊΡƒΠ±Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ приступим ΠΊ созданию восьми Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΊΡƒΠ±Π°. Π”Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ со свойствами x, Ρƒ ΠΈ z. Π’Π΅ΡΡŒ список ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² хранится Π² массивС.

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив ΠΈΠ· 8 Ρ‚ΠΎΡ‡Π΅ΠΊ для Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΊΡƒΠ±Π°.

function makePointsO {

points = new Array();

points[0] = {x: 30, y: 30, z: 30};

points[1] = {x: -30, y: 30, z: 30};

points[2] = {x: -30, y: -30, z: 30};

points[3] = {x: 30, y: -30, z: 30};

points[4] = {x: 30, y: -30, z: -30};

points[5] = {x: 30, y: 30, z: -30};

points[6] = {x: -30, y: 30, z: -30};

points[7] = {x: -30, y: -30, z: -30};

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ восСмь ΠΊΠ»ΠΈΠΏΠΎΠ² для Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΊΡƒΠ±Π°.

for(i=0;i<points.length;i++) {

attachMovie("point", "point"+i, i)

}

}

Данная функция создаСт восСмь ΠΊΠ»ΠΈΠΏΠΎΠ² ΠΈΠ· эталона, Ρ…Ρ€Π°Π½ΡΡˆΠ΅Π³ΠΎΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Имя ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠΏΠ° состоит ΠΈΠ· слова Β«pointΒ» ΠΈ числа ΠΎΡ‚ 0 Π΄ΠΎ 7. Число соотвСтствуСт Ρ‚ΠΎΡ‡ΠΊΠ΅ массива, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ прСдставляСт ΠΊΠ»ΠΈΠΏ.

...

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Команда attachMovie создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΠΈΠΏ ΠΈΠ· эталона, Ρ…Ρ€Π°Π½ΡΡˆΠ΅Π³ΠΎΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Однако для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ воспроизвСсти Π²ΠΎ Flash player ΠΈΠ»ΠΈ Π½Π° Web-страницС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ свойство Export for ActionScript. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π²Ρ‹Π±Ρ€Π°Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Options β†’ Linkage Π² ΠΎΠΊΠ½Π΅ Library. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠΏΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ "point".

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡˆΠ΅ΠΉ ΠΈΡ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² экранноС прСдставлСниС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±Ρ‹ соСдиняла линиями ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ. Помимо ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² _x ΠΈ _y ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊΠ»ΠΈΠΏΠ°, задаСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ _alpha, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡˆΠΈΠΉ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ яркости Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… удалСния Π²Π³Π»ΡƒΠ±ΡŒ экрана.

// УстанавливаСм ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ ΠΈΡ… ΡΡ€ΠΊΠΎΡΡ‚ΡŒ Π½Π° экранС.

function drawPoints() {

for(i=0;i<points.length;i++) {

loc = plotPoint(points[i]);

this["point"+i]._x = loc.x;

this["point"+i]._y = loc.y;

this["point"+i]._alpha = loc.z+100;

}

}

ВсС Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅ΡˆΠ°Ρ‚ΡŒΡΡ Π² Π³Π»Π°Π²Π½ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡˆΠΊΠ°Π»Ρƒ. Π‘Π»Π΅Π΄ΡƒΡŽΡˆΠΈΠ΅ строки вводят модСль ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ rotation.

// Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ останавливаСм

// воспроизвСдСниС Ρ€ΠΎΠ»ΠΈΠΊΠ° Π² этом ΠΊΠ°Π΄Ρ€Π΅.

rotation = 0;

makePoints();

stop();

Π’Π΅ΠΏΠ΅Ρ€ΡŒ остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ drawPoints. ΠžΠ±Ρ€Π°ΡˆΠ΅Π½ΠΈΠ΅ выполняСтся Π² нСбольшой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ reposition. Она измСняСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ rotation Π² зависимости ΠΎΡ‚ полоТСния курсора Π² ΠΏΡ€Π°Π²ΠΎΠΉ ΠΈΠ»ΠΈ Π»Π΅Π²ΠΎΠΉ части экрана. Ѐункция Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ plane исходя ΠΈΠ· полоТСния курсора ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ. Π—Π°Ρ‚Π΅ΠΌ функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ drawPoints для задания Ρ‚Π΅ΠΊΡƒΡˆΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ.

// ИзмСняСм ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΊΡƒΠ±Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅.

function reposition () {

rotation += (275-_xmouse)/1000;

plane =– (200-_ymouse)/100;

drawPoints();

}

Ѐункция reposition вызываСтся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅ ΠΈΠ· ΠΊΠ»ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ поля ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для запуска Π΄Π°Π½Π½ΠΎΠΉ части ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅.

onClipEvent(enterFrame) {

_root.reposition ( );

}

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€ΠΎΠ»ΠΈΠΊΠ° практичСски Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ. Π’ΠΎΡΠ΅ΠΌΡŒ Ρ‚ΠΎΡ‡Π΅ΠΊ Π½Π° экранС ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΊΡƒΠ±, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ€Π°ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ поворачиваСтся Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΌΡ‹ΡˆΡŒ. Π ΠΎΠ»ΠΈΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ 3dcubepoints.fla, Ρ€Π°Π·ΠΌΠ΅ΡˆΠ΅Π½Π½ΠΎΠΌ Π½Π° Web-сайтС. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ этой Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π½Π° рис. 5.10.

Рисунок 5.10 . Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΊΡƒΠ±, прСдставлСнный восСмью Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π½Π° экранС

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π±Π΅Ρ€

Π’ΠΎΡΠ΅ΠΌΡŒ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΊΡƒΠ±Π° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ довольно Ρ‚ΠΎΡ‡Π½ΡƒΡŽ иллюзию Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ модСль. Если Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π»ΠΈΠ½ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π΅Π±Ρ€Π° Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, ΠΎΠ½Π° ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Ρ‚ СшС большС сходства с ΠΊΡƒΠ±ΠΎΠΌ, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ€Π°ΡˆΠ°Π΅Ρ‚ΡΡ.

Π’ΠΎ Flash динамичСскиС Π»ΠΈΠ½ΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π° основС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠ³ΠΎ эталона, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°ΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ линию. Линия начинаСтся Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ ΠΊΠ»ΠΈΠΏΠ° ΠΈ тянСтся Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ Π²Π½ΠΈΠ·. Она простираСтся Ρ€ΠΎΠ²Π½ΠΎ Π½Π° 100 пиксСлов ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ. Π’ ΠΏΠ°Π½Π΅Π»ΠΈ Properties Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡˆΠΈΠ½Ρƒ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠ°ΠΊ hairline. На рис. 5.11 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ основноС ΠΎΠΊΠ½ΠΎ Flash, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит Ρ‚Π°ΠΊΡƒΡŽ линию. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ шаг сСтки составляСт 50x50 пиксСлов.

Рисунок 5.11 . Клип простой Π»ΠΈΠ½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания динамичСских Π»ΠΈΠ½ΠΈΠΉ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΏΠΎΠ»Π΅

Π£ ΠΊΡƒΠ±Π° 12 Π³Ρ€Π°Π½Π΅ΠΉ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ 12 Π»ΠΈΠ½ΠΈΠΉ. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x, y ΠΈ z ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² массивС points. КаТдая линия ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: Ρ€1 ΠΈ Ρ€2.

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив ΠΈΠ· 12 Π»ΠΈΠ½ΠΈΠΉ для Π³Ρ€Π°Π½Π΅ΠΉ ΠΊΡƒΠ±Π°.

function makeLines() {

lines = new Array ();

lines[0] = {p1: 0, p2: 1};

lines[1] = {p1: 1, p2: 2};

lines[2] = {p1: 2, p2: 3};

lines[3] = {p1: 3, p2: 0};

lines[4] = {p1: 4, p2: 5};

lines[5] = {p1: 5, p2: 6};

lines[6] = {p1: 6, p2: 7};

lines[7] = {p1: 7, p2: 4};

lines[8] = {p1: 0, p2: 5};

lines[9] = {p1: 1, p2: 6};

lines[10] = {p1: 2, p2: 7};

lines[11] = {p1: 3, p2: 4};

for(i=0;i<lines.length;i++) {

attachMovie("line","line"+i,50+i)

}

}

Π’Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ функция создаСт 12 ΠΊΠ»ΠΈΠΏΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ»ΠΈΠΏ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ имя linex, Π³Π΄Π΅ x – Π½ΠΎΠΌΠ΅Ρ€ Π»ΠΈΠ½ΠΈΠΈ Π² массивС lines.

Π§Ρ‚ΠΎΠ±Ρ‹ динамичСски Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ Flash линию, Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π΅ содСрТит, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π± ΠΊΠ»ΠΈΠΏΠ° ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π° Π»ΠΈΠ½ΠΈΠΈ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΠΎ Π»ΠΈΠ½ΠΈΠΈ находится Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ ΠΊΠ»ΠΈΠΏΠ°, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ задаСтся Π΅Π΅ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ». ΠœΠ°ΡΡˆΡ‚Π°Π± опрСдСляСт ΠΏΡ€ΠΎΡ‚ΡΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, поэтому, Π·Π°Π΄Π°Π² Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½Ρ‹ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ x ΠΈ y Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π΅ΠΊ, Π²Ρ‹ размСститС линию Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваша линия Π½Π°Ρ‡ΠΈΠ½Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (50,80) ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (170,210), Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, присвоив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ _x ΠΈ _Y значСния 50 ΠΈ 80 соотвСтствСнно. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ: 170 – 50 = 120. Π Π°Π·Π½ΠΈΡ†Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ: 210 – 80 = 130. Π—Π°Π΄Π°Π² значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… _xscale ΠΈ _yscale Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ 120 ΠΈ 130 соотвСтствСнно, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ линию с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (50,80) ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (170,210).

// РисуСм Π³Ρ€Π°Π½ΠΈ ΠΊΡƒΠ±Π°.

function drawLines() {

for(i=0;i<lines.length;i++) {

loc1 = plotPoint(points[lines[i].p1]);

loc2 = plotPoint(points[lines[i].p2]);

this["line"+ij._x = locl.x;

this["line"+i]._y = locl.y;

this["line"+i]._xscale = loc2.x-loc1.x;

this["line"+i]._yscale = loc2.y-loc1.y;

this["line"+i]._alpha = loc1.z+100;

}

}...

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!

Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ высота ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π° ΠΊΠ»ΠΈΠΏΠ° Π»ΠΈΠ½ΠΈΠΈ Π±Ρ‹Π»Π° Ρ€Π°Π²Π½Π° 100 пиксСлам. Π’ΠΎΠ³Π΄Π° ΠΌΠ°ΡΡˆΡ‚Π°Π± 100 % Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ 100 пиксСлам ΠΏΠΎ ΡˆΠΈΡ€ΠΈΠ½Π΅ ΠΈ высотС, 200 % – 200 пиксСлам ΠΈ Ρ‚. Π΄. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρ‹ Π»ΠΈΠ½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ "hairline", Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ влияния Π½Π° Π΅Π΅ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ. Линия любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ свой ΠΌΠ°ΡΡˆΡ‚Π°Π± соотвСтствСнно измСнСнию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… _xscale ΠΈ _yscale.

ВсС, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊ ΠΊΡƒΠ±Ρƒ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π³Ρ€Π°Π½ΠΈ, β€“ это Π·Π°Π΄Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ makeLines ΠΏΡ€ΠΈ запускС Ρ€ΠΎΠ»ΠΈΠΊΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ drawLines ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ reposition. На рис. 5.12 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’Π΅ΡΡŒ Ρ€ΠΎΠ»ΠΈΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, запустив Ρ„Π°ΠΉΠ» 3Dcube.fla Π½Π° Web-сайтС.

Рисунок 5.12. Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΊΡƒΠ±, состоящий ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ Π»ΠΈΠ½ΠΈΠΉ