Архів клипарта

Слід від курсора

Розглянемо спецефект, створення якого неможливо без використання ActionScript. У нашому прикладі, коли користувач переміщує миша, за курсором залишається характерний шлейф, що складається з танучих копій зображення, прив'язаного до курсора.
На рис. 5.9 можна побачити приклад цього ефекту. Кожна з кіл показує попередню позицію курсора. Чим раніше створена окружність, тим вона менше і світліше.

Малюнок 5.9 Залишаючи копії кліпу в позиції, в якій тільки що знаходився курсор, можна створити слід, що тягнеться за курсором

Ідея полягає в тому, щоб створити слід за курсором з поступово зменшуються і танучих кіл. Коли користувач перемішає миша, виникає відчуття, що курсор "малює" за собою хвіст.
У початковий момент кожен гурток має свій фіксований розмір і абсолютно непрозорий. Поступово він зменшується в розмірах і блідне до тих пір, поки остаточно не зіллється з фоном.
У будь-який момент часу на екрані тане і зменшується безліч кружечків, і в міру ісчеезновенія старих їх місце займають нові, що з'являються в поточній позиції курсору.

Окружності є кліпами, які створюються і поміщаються в визна поділену точку екрану протягом роботи програми. У коді зберігаються всі існуючі кліпи. При кожному зверненні до кадру програмі переглядає масив, зменшуючи розмір і збільшуючи прозорість кожного кліпу. Коли кліп з окружністю стає невидимим, він видаляється; також видаляється відповідний елемент масиву.

Наш "actions" -кліп містить два обробника onClipEvent. Перший включається на початку ролика і створює порожній масив, щоб містити посилання на кліпи, що утворюють хвіст. Він також встановлює лічильнику trailNum значення нуль. Ця змінна містить значення номера наступного кліпу, який ви створите.
Мінлива speed визначає як швидко кліпи, складові "хвіст", будуть зменшуватися в розмірах і танути.

On ClipEvent (load) <
// Створюємо масив,
trail = new Array ();
trailNum = 0;
// Менше значення змінної відповідає меншій
// швидкості.
speed = 2;
>

Наступний обробник починається зі створення екземпляра кліпу. Кожному кліпу присвоюється унікальне ім'я виду cursor trail + trailNum Мінлива trailNum використовується також для визначення рівня чергового кліпу.

On ClipEvent (enterFrame) <
// Створюємо черговий кліп.
var mc = _root.attachMovie ( "cursor trail", "cursor trail" + trailNum, trailNum);
>

Створений кліп завадимо в поточну позицію курсору.

// Встановлюємо позицію.
mc._x = _root._xmouse;
mс._у = _root._ymouse,

Покажчик на новий кліп додається в масив trail. Потім значення trailNum збільшується на одиницю.

// Додаємо покажчик в масив. trail.push (mc);
trailNum ++;

За допомогою циклу в іншій частині коду відбувається звернення до всіх кліпів масиву trail. Розмір і прозорість кожного кліпу змінюються на величину speed. Коли властивість _alpha поточного кліпу стає менше або дорівнює нулю, цей кліп видаляється з масиву і ролика в цілому.

// Звертаємося до існуючих кліпів,
for (var i = trail.lenght-1; i> = 0; i--) // Зменшуємо властивості _alpha і розмір кліпу,
trail [i] ._ alpha - = speed;
trail [i] ._ xscale - = speed;
trail [i] ._ yscale - = speed;
// Видаляємо кліп, коли він стає невидимим,
if (trail [i] ._ alpha

Схожі статті