![]() |
|
||||||||||
|
|||||
|
В мувик производится загрузка нескольких картинок в одни координаты. Всем выставляется _alpha=0;
Как сделать так, чтобы картинки из загруженного массива проявлялись и затухали. причем параллельно, то есть одна начала затухать, следующая начала увеличивать _alpha В приведенном ниже коде работает без цикла, то есть для одной картинки _alpha увеличивается и затухает, в цикле ничего не работает. Последний раз редактировалось admGT; 24.09.2006 в 23:48. |
|
|||||
|
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
Ниже я написал код для следующего механизма:
1. Картинки берутся из библиотеки. 2. В библиотеки каждая картинка должна быть мувиклипом с linkage id'ом вроде "Имя картинки"+"Номер картинки". Например, "pic1", "pic2", "pic3" и т.д. 3. Первая картинка не проявляется, а показана сразу проявленной. 4. Механизм проявления такой: [---DI---][--------SI--------] [------------------][---DI---][--------SI--------] [--------------------------------------][---DI---][--------SI--------] Где DI - интервал проявления, SI - интервал отображения с _alpha 100%. Как видите, следующая картинка начинает отображаться над предыдущей, достигает _alpha 100%, после чего предыдущая (которая уже перекрыта следующей) удаляется. Для более наглядного представления о том, как работает код, смотрите во Флеше Control/Debug Movie (Ctrl+Shift+Enter). 5. Точка привязки в мувиклипах с картинками - левый верхний угол или как нравится. // Количество кадров, в течение которых картинка будет существовать с _alpha 100
var SHOW_INTERVAL:Number = 90;
// Количество кадров, в течение которых картинка будет проявляться
var DISSOLVE_INTERVAL:Number = 30;
// Строка, к которой будет прибавляться номер картинки для выборки из библиотеки (начиная с 1)
var PICTURE_BASE_NAME:String = "pic";
// Количество картинок, которые нужно извлечь из библиотеки
var PICTURES_NUMBER:Number = 3;
// Координата X точки, к которой будет привязываться новая картинка
var PICTURES_X:Number = 0;
// Координата Y точки, к которой будет привязываться новая картинка
var PICTURES_Y:Number = 0;
// Поскольку первая картинка уже проявлена, ставим:
var frameCounter:Number = DISSOLVE_INTERVAL;
// Номер текущей картинки
var currentPicture:Number = 1;
// Добавляем первую картинку
addPicture(currentPicture).frameCounter = DISSOLVE_INTERVAL;
// Определяем функцию добавления новой картинки
function addPicture(pictureNum):MovieClip
{
// Имя новой картинки (оно же равно идентификатору в библиотеке)
var newPictureName:String = PICTURE_BASE_NAME + pictureNum;
// Мувиклип новой картинки
var newPicture:MovieClip = this.attachMovie(newPictureName, newPictureName, this.getNextHighestDepth(), {_alpha:0, _x:PICTURES_X, _y:PICTURES_X});
// Устанавливаем счётчик кадров для мувиклипа новой картинки
newPicture.frameCounter = 1;
// Определяем событие onEnterFrame для мувиклипа новой картинки
newPicture.onEnterFrame = function()
{
// Проверяем, нужно ли удалять мувиклип картинки
if (this.frameCounter > (DISSOLVE_INTERVAL + SHOW_INTERVAL))
{
// Удаление мувиклипа картинки
this.removeMovieClip();
}
// Проверяем, проявляется ли данная картинка
if (this.frameCounter <= DISSOLVE_INTERVAL)
{
// Изменение прозрачности картинки во время проявления
this._alpha = this.frameCounter * (100 / DISSOLVE_INTERVAL);
}
// Наращиваем значения счётчика кадров мувиклипа картинки
this.frameCounter++;
}
// Возвращаем мувиклип новой картинки
return newPicture;
}
// Определяем событие onEnterFrame для _root
onEnterFrame = function()
{
// Проверяем, пора ли выводить новую картинку
if (frameCounter > SHOW_INTERVAL)
{
// Наращиваем значение номера текущей картинки
currentPicture++;
// Соблюдаем пределы :)
if (currentPicture > PICTURES_NUMBER)
{
// Сбрасываем значение номера текущей картинки
currentPicture = 1;
}
// Добавляем новую картинку
addPicture(currentPicture);
// Сбрасываем значение счётчика кадров для _root
frameCounter = 1;
}
else
{
// Наращиваем значение счётчика кадров для _root
frameCounter++;
}
}
Последний раз редактировалось Хемуль; 25.09.2006 в 03:02. |
|
|||||
|
Спасибо!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|