Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.09.2006, 23:42
admGT вне форума Посмотреть профиль Отправить личное сообщение для admGT Найти все сообщения от admGT
  № 1  
Ответить с цитированием
admGT

Регистрация: Jul 2005
Сообщений: 84
Отправить сообщение для admGT с помощью ICQ
По умолчанию Затухание в цикле

В мувик производится загрузка нескольких картинок в одни координаты. Всем выставляется _alpha=0;
Как сделать так, чтобы картинки из загруженного массива проявлялись и затухали. причем параллельно, то есть одна начала затухать, следующая начала увеличивать _alpha

В приведенном ниже коде работает без цикла, то есть для одной картинки _alpha увеличивается и затухает, в цикле ничего не работает.

Код:
this.onEnterFrame=function(){
		for(j=0;j<arr.length;j++){//arr - массив с картинками
			clearInterval(inr);
			if(eval("a"+j)._alpha<=100){
			  eval("a"+j)._alpha++;}
			else{var inr=setInterval(function(){eval("a"+j)._alpha--;},1000)
			     }


Последний раз редактировалось admGT; 24.09.2006 в 23:48.
Старый 25.09.2006, 01:27
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: 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++;
	}
}
Этот код можно положить куда угодно. В прикреплении живой пример.
Вложения
Тип файла: zip DissolveSequence.zip (71.7 Кб, 66 просмотров)


Последний раз редактировалось Хемуль; 25.09.2006 в 03:02.
Старый 25.09.2006, 10:50
admGT вне форума Посмотреть профиль Отправить личное сообщение для admGT Найти все сообщения от admGT
  № 3  
Ответить с цитированием
admGT

Регистрация: Jul 2005
Сообщений: 84
Отправить сообщение для admGT с помощью ICQ
Спасибо!

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:58.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.