Показать сообщение отдельно
Старый 05.05.2008, 07:18
drobinkin вне форума Посмотреть профиль Отправить личное сообщение для drobinkin Найти все сообщения от drobinkin
  № 1  
Ответить с цитированием
drobinkin
 
Аватар для drobinkin

Регистрация: Jun 2006
Сообщений: 85
Question Помогите разобраться: загрузка и проигрыш мувиков через случайные промежутки времени

Люди добрые, помогите кто чем может. Третий день честно бьюсь — никак не осилю задачу. Сначала опишу что мне нужно.

Есть 4 внешних простых однотипных мувика длиной по 25(неважно) кадров каждый - tree1.swf...tree4.swf
Мне нужно выбирать случайным образом только один из них, загрузить его на сцену, проиграть до конца и выгрузить. После этого через случайный промежуток времени (в интервале примерно 1—5 сек) операция повторяется — выбираем случайно один мувик, грузим, играем, выгружаем — и так до бесконечности.
При этом есть еще кнопка, при наведении на которую приостанавливается воспроизведение загруженного мува. Убрали курсор — мув играет дальше до конца и т.д. Надеюсь, понятно изложил.

Поиском по форуму нашел кучу похожих примеров, но все они как-то вокруг да около, вобщем прикрутить под свои нужды так и не удалось

Итак, что имеем (код оставил только тот, что более-менее работает, остальное вычистил.)

В каждом из внешних мувов в последнем кадре прописал:
Код:
this.removeMovieClip();
чтобы клип сам выгружался по достижении конца — вроде работает.

Код:
//функция генерации случайных чисел — пример из хелпа
_global.randRange = function(min:Number, max:Number):Number  {
	var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;
	return randomNum;
};

//собственно, основная функция
showTreez = function () {
	//генерим случ. номер от 1 до 4
	ti = _global.randRange(1, 4);
	
	//Здесь несущественно — предварительные вычисления всяких координат-размеров
	d = _global.randRange(-1, 1);
	if (d>=0) {
		di = 1;
	} else {
		di = -1;
	}
	//временно принудительно грузим только 4-й мув, для простоты
	ti = 4;
	
	//грузим собственно мув и он начинает играть
	this.createEmptyMovieClip("t_mc", 10);
	loadMovie("treez/tree"+ti+".swf", t_mc);
	t_mc._x = 360;
	t_mc._y = 158.7;
	t_mc._xscale = di*100;
};


//--------------Main code-------------------

//здесь для простоты пока взят постоянный интервал, хотя нужен случайный
setInterval(this, "showTreez", 3000);


//ну, и кнопка

bt.onRollOver = function() {
	t_mc.stop();
};

bt.onRollOut = function() {
	t_mc.play();
};
Собственно, вся фигня начинается сразу — после запуска функция живет своей жизнью, а мувики своей. Это я уже понял. Т.е. функция себе крутится внутри, грузит клипы и усе. В принципе, 2-3 секунд пока хватает, чтобы мувы грузились как бы по одному и проигрывались целиком. Если время в сетИнтервале уменьшить до 0,5-1 секунды, то видно, что клипы не доигрываются, а перегружаются новым экземпляром. И кнопка, естественно, работает не так, как надо — если навести мышь и подержать подольше, то видно что приостанавливается только загруженный на момент наведения мыши экземпляр, но функция продолжает крутиться, и через время перегружает его уже новым.

Также ни к чему не привела попытка подставить в сетИнетрвале что-то вроде
Код:
rndTime = _global.randRange(1, 3);
setInterval(this, "showTreez", rndTime);
Еще во внешних мувах прописал на всяк случай
Код:
в первом кадре _global.flag=false;
в последнем _global.flag = true;
но отловить его у меня тоже не получилось
Вобщем, совсем уже крыша едет. Подскажите, пожалуйста, что сделать, чтобы "со всей этой фигней взлететь?"
На всяк случай вот исходник с одним внешним мувом.
randomtreez.ZIP

зы Обещаю, если все получится как надо - выложить тут ссылу на сайт, где эта красота будет крутиться