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

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

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

Регистрация: Mar 2009
Сообщений: 122
Question случайнный кадр в случаяное время

здрасте.
вопрос такой,
есть move clip.
в нем генерируеться 4 числа.
если число 1, то мувик должен идти в кадр 10
если 2, то 17
если 3, то 27
если 4, то 35
и делать он должен это каждые время, генерируемое компьютером и число это должно быть от 9 до 15 секунд.

получился такой код:
Код AS1/AS2:
var ti2 = Math.floor(Math.random() * 2500) + 3000;
 
function runclip()
{
	var ci = Math.floor(Math.random() * 4);
 
	if (ci == 1)
	{
		this.gotoAndPlay(9);
	}
	else if (ci == 2)
	{
		this.gotoAndPlay(18);
	}
	else if (ci == 3)
	{
		this.gotoAndPlay(2);
	}
	else if (ci == 4)
	{
		gotoAndPlay(35);
	}
 
	ti2 = Math.floor(Math.random() * 2500) + 3000;
}
 
ti = setInterval(runclip, ti2);
но не работает.

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

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 alex001:
Код AS1/AS2:
var TIMER_MIN_INTERVAL:Number = 9;
var TIMER_MAX_INTERVAL:Number = 15;
var FRAMES:Array = [10, 17, 27, 35];
 
var timer:Number;
 
jumpToRandomFrame();
 
function jumpToRandomFrame():Void
{
	gotoAndPlay(FRAMES[randRange(0, FRAMES.length - 1)]);
	timer = setTimeout(jumpToRandomFrame, randRange(TIMER_MIN_INTERVAL, TIMER_MAX_INTERVAL) * 1000);
}
 
function randRange(min:Number, max:Number):Number
{
	var randomNum:Number = Math.round(Math.random() * (max - min)) + min;
	return randomNum;
}
Интервал срабатывания таймера, правда, будет от 9 до 15 только с целым шагом. Если не подойдёт, легко изменить.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого


Последний раз редактировалось Хемуль; 28.07.2010 в 23:56.
Старый 28.07.2010, 23:55
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Здрасте.
1.
Цитата:
Сообщение от alex001 Посмотреть сообщение
и делать он должен это каждые время, генерируемое компьютером и число это должно быть от 9 до 15 секунд
"Имеющий ум, да сочтёт число зверя, ибо число это человеческое, и число это..."
У вас диапазон неверно задается:
Код AS1/AS2:
Math.floor(Math.random() * 2500) + 3000;
2. В интервале нельзя динамически менять интервальное время. Через setTimeout нужно делать.
3. И еще. Если нет гарантии, что головка воспроизведения никогда не попадет в тот же кадр, где у вас код, то лучше его вынести из мувика, иначе он начнет выполняться всякий раз заново и интервалы будут плодиться.


Последний раз редактировалось mooncar; 29.07.2010 в 00:00.
Старый 29.07.2010, 14:11
alex001 вне форума Посмотреть профиль Отправить личное сообщение для alex001 Найти все сообщения от alex001
  № 4  
Ответить с цитированием
alex001

Регистрация: Mar 2009
Сообщений: 122
у меня после перехода на кадр он проигрываеться сколькото потом стоит команда gotoAndPlay(1) после чего опять должно опять должно пройти время. но время, Хемуль, не проходит и он переходит без пропуска времении.
код не совсем работает.


Последний раз редактировалось alex001; 29.07.2010 в 15:32.
Старый 29.07.2010, 14:21
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 5  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
Цитата:
Сообщение от alex001 Посмотреть сообщение
у меня после перехода на кадр он проигрываеться сколькото потом стоит команда gotoAndPlay(1) после чего опять должно опять должно пройти время. но время, Хемуль не проходит и он переходит без пропуска времении.
код не совсем работает.
Ну, я вам сделал так, как вы просили в первом сообщении. Там вы не писали про gotoAndPlay(1) и про то, что должен сперва осуществляться переход на случайный кадр, потом анимация, потом переход на первый кадр и проигрывание, со стартом которого вновь запускается таймер. Так что код работает совсем так, как вы просили. Возможно, не так, как хотели...
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 29.07.2010, 15:02
alex001 вне форума Посмотреть профиль Отправить личное сообщение для alex001 Найти все сообщения от alex001
  № 6  
Ответить с цитированием
alex001

Регистрация: Mar 2009
Сообщений: 122
а как написать код, чтобы он так работал?
впринцепи не имеет значения откуда начинаеться отсчет, от того как анимация доигранна и мувик перешол на кадр 1, или сразу как перешел на тот кадр.

Добавлено через 6 часов 13 минут
а как написать такой код? никто не подскажет?

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

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

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


 


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


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