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

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

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

Регистрация: Aug 2009
Сообщений: 99
По умолчанию setTimeout не работает?

Циклом создаю несколько пронумерованных мувиков, которые выстраиваю в столбец.
В том-же цикле загружаю МКЛоадером туда картинки.
Нужно: чтоб загруженные картинки по очереди "появлялись" (Tween _alpha и _x).
Очерёдность реализую: setTimeout(showImgBox, delay)
Результат: не получается, картинки появляются одновременно (((

код:

Код AS1/AS2:
stop();
 
import mx.transitions.Tween;
import mx.transitions.easing.*;
 
var imgBox_X:Number = -10 //для стартового бокса с превью в polyPrvContainer_mc
var imgBox_Y:Number = 0; //для стартового бокса с превью в polyPrvContainer_mc
var shag_Y:Number = 10; //верт. отступ между картинками
var showImgBoxAlphaType = None.easeNone;
var showImgBoxType = Elastic.easeOut;
var showImgBoxAlphaTime = 0.2;
var showImgBoxTime = 0.4;
 
var imgListener:Object = new Object();
var imgLoader:MovieClipLoader = new MovieClipLoader();
 
		imgListener.onLoadStart = function(mc:MovieClip):Void
		{
			mc._alpha = 0;
			mc._x = 0;
			mc._y= imgBox_Y;
 
			imgBox_Y+=(46+shag_Y); //46 - высота картинки
		}
 
		imgListener.onLoadInit = function(mc:MovieClip):Void
		{
			trace('imgListener:  центрирую картинку в '+mc._name);
			mc._x = Math.round((mc._parent._width-mc._width)/2);
			mc._y +=mc._x;  //прибавляем значение сдвига по Х, так как у нас картинка квадратная и верт.сдвиг=горизонт.
			var nomer = mc._name.substr(9,1);
			setTimeout(showImgBox(mc,nomer),nomer*1000);
		}
 
 
imgLoader.addListener(imgListener);
 
function showImgBox(mc:MovieClip, num:Number):Void
{
	varTarget = mc;
	varTarget['varTween'+num] = new Tween(mc, "_alpha", showImgBoxAlphaType, 0, 100, showImgBoxAlphaTime, true);
	moveTo_X=mc._x;
		//var showImgBoxTween:Tween = new Tween(mc, "_x", showImgBoxType, imgBox_X, moveTo_X,  showImgBoxTime, true);
}
 
var poly_xml:XML = new XML();
poly_xml.ignoreWhite = true;
var total_poly:Number;
 
poly_xml.onLoad = function(success):Void
{
	if (success)
	{
		total_poly = poly_xml.childNodes.length;
			for (var i = 0; i<total_poly; i++)
			{
				var imgBox_mc:MovieClip = polyPrvContainer_mc.createEmptyMovieClip('imgBox_mc'+i, polyPrvContainer_mc.getNextHighestDepth());
 
				var img_path:String = poly_xml.childNodes[i].childNodes[0].firstChild.nodeValue+'-but.jpg';
 
				imgLoader.loadClip(img_path, imgBox_mc);
			}
	} else 
			{
				trace('Невозможно открыть XML');
			}
}
 
poly_xml.load('xml/poly.xml');
Думаю, гвоздь где-то в физической очерёдности загрузки картинок: нет очерёдности, грузятся вразнобой, из-за этого сетТаймаут не работает.
Но тут ещё такая штука - когда выставляю, например, 20 000 мс якобы на появление каждой картинки - задержка в 20 сек полюбому должна быть заметна - но она незаметна, значит её нет или всё-таки нужно мудрить с очерёдностью?((

заранее премного благодарен!

Старый 05.12.2009, 10:53
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
В setTimeout() вы передаете не ссылку на функцию, а результат вызова функции, т.е. ничего.

Старый 05.12.2009, 10:55
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
А не хотите сначала загрузить все картинки в процессе загрузки ролика, а потом уже запускать очередь на их появление?

Старый 08.12.2009, 05:47
mj_nooker вне форума Посмотреть профиль Отправить личное сообщение для mj_nooker Найти все сообщения от mj_nooker
  № 4  
Ответить с цитированием
mj_nooker

Регистрация: Aug 2009
Сообщений: 99
2udaaff: спасибо, действительно ссылка решает
2mooncar: ну, думал об этом, когда некоторое время назад создавал топик с вопросом похожим на этот. просто почему-то кажется, что каждую картинку (даже если она всего 46х46 и 1.5К) прикольней загружать с хоть короткой, НО анимацией прелоадера (w2.0? ). в данный момент наверное таки заморочусь и покумекаю над while циклом и поочерёдной загрузкой.

вот разобрался с таймаутом, но теперь в функции, которую он запускает не додумаюсь как ПРАВИЛЬНО объявить составную переменную (чтоб каждый вызов функции создавал новый "Tween"+num твин)
пробовал:
Код AS1/AS2:
varTarget['varTween'+num] = new Tween(mc, '_alpha', showImgBoxAlphaType, 0, 100, showImgBoxAlphaTime, true);
.
не получилось - картинки выезжают не по очереди, или даже может быть и по очереди - но их твины прерываются следующим объявлением такого-же твина (одна и та-же переменная)
пробовал:
Код AS1/AS2:
this['Tween'+num] = new Tween(mc, '_alpha', showImgBoxAlphaType, 0, 100, showImgBoxAlphaTime, true);
.
получилось вроде, но тогда нельзя типизировать эту переменную ((
А именно объявление переменных твинов нужны для того, чтоб типизировать и получить возможность повесить на последний из них onMotionFinished (в конце загрузки-появления последней превью-картинки хачю, чтоб появился скроллбар).
Плюнул и написал в функции просто создание твина:
Код AS1/AS2:
new Tween(mc, '_alpha', showImgBoxAlphaType, 0, 100, showImgBoxAlphaTime, true);
.
ну да, твин вроде последовательный (вследствии setTimeout и увеличивающегося интервала вызова функции с твином), но отлов загрузки последней превью пришлось реализовывать некультурным способом.

есть мысли? <
тоесть подскажите, плз, в чём моя ошибка в создании составного имени переменной ?


Последний раз редактировалось mj_nooker; 08.12.2009 в 08:28.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
settimeout

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

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


 


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


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