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

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

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

Регистрация: Sep 2005
Сообщений: 18
По умолчанию Проблема с функцией рендома

Есть XML-документ, откуда берутся фотки для простого слайдшоу. Я решил сделать, чтобы у слайдов была случайная длительность демонстрации. Т.е. один слайд длится 5 секунд, второй допустим 2 секунды и т.д.
Объявил массив конкретных чисел и и при каждом отображении нового слайда задаю ему длительность отображения, упираясь на одно из чисел из массива рендомом. Но посидел посчитал и понял, что все равно все слайды с одинаковой длительностью отображаются. Вывел трейсом на экран, там числа набираются случайно и количество равно количеству картинок в XML. Я так понимаю, каждое из чисел присваивается каждой картинке. Так почему у меня в оутпуте все так, как надо, а по факту у всех одинаковая длительность?

Массив чисел:
Код AS1/AS2:
var speedArray = new Array(5, 7, 2, 10, 5, 7, 2, 10, 5, 7, 2, 10);
Функция вывода слайда:
Код AS1/AS2:
function callImages1() {
 
	_root.myMCL1 = new MovieClipLoader();
	_root.myPreloader1 = new Object();
	_root.myMCL1.addListener(_root.myPreloader1);
	_root.myClips_array1 = [];
 
	_root.myPreloader1.onLoadComplete = function(target1) {
           speedRan = speedArray[Math.round(Math.random()*speedArray.length)]; //генерация числа для расчета длительности отображения слайда
	    trace(speedRan);
		_root.myClips_array1.push(target1);
		target1._alpha = 0;
 
		if (_root.myClips_array1.length == _root.myImagesNo1) {
 
			_root.target_mc1 = -1;
			moveSlide1();
			myShowInt1 = setInterval(moveSlide1, (speedRan*1000)+1000); //расчет длительности отображения слайда
		}
 
	};
 
	for (i=0; i<_root.myImagesNo1; i++) {
 
		temp_url1 = _root.myImages1[i].attributes.url;
		temp_mc1 = myContainer_mc1.createEmptyMovieClip(i, myContainer_mc1.getNextHighestDepth());
 
		_root.myMCL1.loadClip(temp_url1,temp_mc1);
	}
 
 
}
Подскажите, что не так? И если можно, намекните, как сделать, чтобы каждый раз для отображения генерировалось новое число, а не все числа для всех слайдов одной пачкой?

Старый 09.10.2011, 02:05
Доктор Глюк вне форума Посмотреть профиль Отправить личное сообщение для Доктор Глюк Найти все сообщения от Доктор Глюк
  № 2  
Ответить с цитированием
Доктор Глюк
[+1 03.02.12]
 
Аватар для Доктор Глюк

Регистрация: Jul 2007
Адрес: Благовещенск на Амуре
Сообщений: 22
думать некогда) как вариант попробуй заменить

Код AS1/AS2:
Math.random()*speedArray.length
на
random(speedArray.length)
и вобще)) чево это такое??)) выбирать рандомно из рандомного массива)) бред
если хочеш от 2 до 10 рандома то делай так:
Код AS1/AS2:
int(random(8)+2)
__________________
даёш кликопробегом по иконам


Последний раз редактировалось Доктор Глюк; 09.10.2011 в 02:07.
Создать новую тему Ответ Часовой пояс GMT +4, время: 04:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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