Создание Flash игр -практические уроки

         

Создание кода



Создание кода

Наш "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 // Удаляем указатель из массива.
trail.splice(0, 1);
// Удаляем клип.
trail [i]. RemoveMovieClip();
}
}
}

Обратите внимание, что массив сканируется от конца к началу. Это сделано потому, что из массива время от времени удаляются элементы, бы массив сканировался от начала к концу, то при удалении элемента возникала бы путаница в порядке следования элементов. Например, если удалить первый элемент, то первым элементом станет второй. Тогда на следующем шаге цикла произойдет обращение к следующему за вторь элементу, то есть к третьему. Таким образом, второй элемент массу окажется пропущенным.

Содержание раздела