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

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

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

Регистрация: Aug 2006
Адрес: msk
Сообщений: 100
Отправить сообщение для Ulya с помощью ICQ
По умолчанию Сменные баннеры

Уважаемые гуру, помогите ещё раз пожалйста.
Хотелось бы сделать баннер программно из массива картинок
Есть массив объектов, ести объект имеет поле "тип", равное "banner", то к объекту также прилепляется массив arr с именами картинок arr[u].b_name и временем зависания каждой картинки на экране arr[u].time. Не получается менять баннер через нужный промежуток, подскажите где ошибка. Мне или нужно сделать задержку в том цикле, который закоментарен, либо заставить работать функциию loop, она сейчас не работает.
Код:
function PutObjects() {
	_root.depth++;
	for (q=0; q<_root.Objects.length; q++) {
		var curr1:MovieClipLoader = new MovieClipLoader();
		var curr:MovieClip = _root.createEmptyMovieClip("obj_"+q, _root.depth);
			if (_root.Objects[q].type eq "banner") {
			_root.depth++;
			var mclListener:Object = new Object();
			mclListener.onLoadInit = function(target_mc:MovieClip) {
				number = target_mc._name.split("_");
				nu = Number(number[1]);
				target_mc._alpha = _root.Objects[nu].alpha;
				target_mc._x = _root.Objects[nu].x;
				target_mc._y = _root.Objects[nu].y;
				target_mc._width = _root.Objects[nu].w;
				target_mc._height = _root.Objects[nu].h;
			};
			u = 0;
			function loop() {
				trace("u="+u);
				if (u == _root.Objects[q].arr.length) {
					clearInterval(l);
					return;
				}
				u++;
				curr1.loadClip(_root.Objects[q].arr[u].b_name, curr);
				curr1.addListener(mclListener);
			}
			
			l=setInterval(this,"loop", 1000);
			/*for (u=0; u<_root.Objects[q].arr.length; u++) {
			curr1.loadClip(_root.Objects[q].arr[u].b_name, curr);
			}
			curr1.addListener(mclListener);
			*/
		}
		
	}
}

Старый 02.10.2006, 15:00
Ulya вне форума Посмотреть профиль Отправить личное сообщение для Ulya Найти все сообщения от Ulya
  № 2  
Ответить с цитированием
Ulya

Регистрация: Aug 2006
Адрес: msk
Сообщений: 100
Отправить сообщение для Ulya с помощью ICQ
Сделала с использование класса MC Tween , теперь у меня баннеры меняются, но так в цикле, это происходит один раз, то есть, если например в папке лежат 4 баннера, они меняются друг за другом, цикл останавоивается. Как начать выделенный цикл сначала?
Код:
if (_root.Objects[q].type eq "banner") {
			_root.depth++;
			curr._alpha = _root.Objects[q].alpha;
			curr._x = _root.Objects[q].x;
			curr._y = _root.Objects[q].y;
			for (u=0; u<_root.Objects[q].arr.length; u++) {
				var item:MovieClip = curr.createEmptyMovieClip("item_"+u, _root.depth);
				item.loadMovie(_root.Objects[q].arr[u].b_name);
				item._alpha = 0;
				_root.depth++;
				trace("item="+item);
			}
			_root.FLAG = false;
			myCallBack = function () {
				trace("ok, completed");
				trace("u="+u);
			};
			for (u=0; u<_root.Objects[q].arr.length; u++) {
				trace("delay "+_root.Objects[q].arr[u].time);
				
				if ((u == 0) && (!_root.FLAG)) {
					curr["item_"+u].tween("_alpha", 100, 0.1, "linear", undefined, myCallBack);
					_root.FLAG = true;
				}
				if ((u == 0) && (FLAG)) {
					curr["item_"+u].tween("_alpha", 100, 0.1, "linear", _root.Objects[q].arr[_root.Objects[q].arr.length-1].time, myCallBack);
					_root.FLAG = true;
				}
				trace("u="+u);
				//trace("_root.s "+_root.s);
				curr["item_"+u].tween("_alpha", 100, 0.1, "linear", _root.Objects[q].arr[u-1].time, myCallBack);
				_root.FLAG = true;
			}
		}

Старый 02.10.2006, 15:55
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 3  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 Ulya:
Я бы не делал цикла вообще... Цикл предполагает выполнение каких-то действий до возникновения какого-то условия... Если у вас цикл бесконечный, то зачем он вообще нужен?
Я бы просто сделал всё setInterval'ами... А вообще взгляните на прикрепление... Чем-то схоже с вашей задачей...
Заметьте, я сделал это вообще без Твинов и циклов...
Вложения
Тип файла: zip DissolveSequence.zip (71.7 Кб, 89 просмотров)
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 05.10.2006, 12:30
Ulya вне форума Посмотреть профиль Отправить личное сообщение для Ulya Найти все сообщения от Ulya
  № 4  
Ответить с цитированием
Ulya

Регистрация: Aug 2006
Адрес: msk
Сообщений: 100
Отправить сообщение для Ulya с помощью ICQ
Хемуль, спасибо за пример, сделала вот так, работает, но со временем зависает, у меня есть подозрение, что скорей всего что-то где-то не удаляется, за полчаса флэха зависает полностью, подскадите где что нужно убивать?
Код:
function put(banners_arr, qq) {
	curr = _root["obj_"+qq];
	var curr1:MovieClipLoader = new MovieClipLoader();
	trace(banners_arr);
	var DISSOLVE_INTERVAL:Number = 10;
	var PICTURES_NUMBER:Number = banners_arr.length;
	var frameCounter:Number = 0;
	var currentPicture:Number = 0;
	var mclListener:Object = new Object();
	mclListener.onLoadInit = function(target_mc:MovieClip) {
		trace("onLoadInit "+target_mc);
		target_mc._x = _root.Objects[qq].x;
		target_mc._y = _root.Objects[qq].y;
		target_mc._width = _root.Objects[qq].w;
		target_mc._height = _root.Objects[qq].h;
	};
	addPicture(currentPicture).frameCounter = DISSOLVE_INTERVAL;
	function addPicture(pictureNum):MovieClip {
		var newPicture = curr.createEmptyMovieClip("newPicture", this.getNextHighestDepth());
		newPicture.frameCounter = 1;
		newPicture.onEnterFrame = function() {
			trace("on EnterFrame new Picture"+ this.frameCounter);
			this.frameCounter++;
		};
		SHOW_INTERVAL = 31*banners_arr[pictureNum].time;
		var newPictureName:String = banners_arr[pictureNum].b_name;
		for (v in curr) {
			curr1.unloadClip(curr[v]);
		}
		curr1.loadClip(newPictureName, newPicture);
		curr1.addListener(mclListener);
		newPicture.frameCounter = 1;
		return newPicture;
	}
	curr.onEnterFrame = function() {
		if (PICTURES_NUMBER<>1) {
			if (frameCounter<=DISSOLVE_INTERVAL) {
				trace("this "+this.newPicture);
				this.newPicture._alpha = frameCounter*(100/DISSOLVE_INTERVAL);
			}     
			if (frameCounter>SHOW_INTERVAL) {
				for (v in this) {
					this[v].removeMovieClip();
				}
				trace("теперь внутри");
				for (v in this) {
					trace("-"+this[v]);
				}
				currentPicture++;
				if (currentPicture>PICTURES_NUMBER-1) {
					currentPicture = 0;
				}
				trace("PICTURES_NUMBER "+PICTURES_NUMBER);
				addPicture(currentPicture);
				frameCounter = 1;
			} else {
				frameCounter++;
			}
		}
	};
}

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

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

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


 


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


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