![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Apr 2002
Адрес: СПб
Сообщений: 288
|
Подскажите, пожалуйста.
имеется двумерный массив мне нужно получать значение случайной ячейки этого массива по таймеру для этого вычисляю случайное число первого индекса - r_arr и случайное число второго индекса - r_it var picsArray = []; picsArray[0]=["00","01","02","03"]; picsArray[1]=["10","11","12","13","14","15"]; picsArray[2]=["20","21","22","23","24","25","26","27"]; intervalId = setInterval(random_f, 3000); function random_f() { _root.onEnterFrame = function() { if (_root.r_arr_old == _root.r_arr) { _root.r_arr = Math.round(Math.random()*3); } else { _root.r_arr_old = _root.r_arr; _root.r_it = Math.round(Math.random()*_root.picsArray[r_arr].length) trace("_root.r_arr "+_root.r_arr); trace("_root.r_it "+_root.r_it); delete _root.onEnterFrame; } }; } Как с этим бороться?
__________________
Хватит клавиши топтать... :mad: |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Почему? Потому, что Math.floor всегда округляет в меньшую сторону, поэтому значения будут в диапазоне 0..length-1, что и нужно для доступа к массиву, а Math.round может округлить в большую, поэтому будет давать диапазон 0..length. Последний раз редактировалось iNils; 21.05.2012 в 11:38. |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
as_68, чего-то вы мудрите много в вашей задаче
![]() Если структурировать то, что вам нужно, то получатся следующие действия: 1. Загрузить xml с путями до файлов, в которых прописаны пути до картинок 2. Прочитать xml и занести в массив все пути до файлов 3. Начать загрузку всех файлов 4. После загрузки какого-либо файла, заносить его содержимое в массив путей до картинок. При этом массив не должен быть двумерным, — это избыточно и только усложняет дальнейшую работу. 5. Так же, после загрузки какого-либо файла, сравнивать общее кол-во загруженых файлов с кол-вом файлов, которое указано в xml 6. Когда все файлы загружены, мы уверены в том, что в массив с путями до картинок занесены все пути, которые должны быть, поэтому переходим к следующему шагу, — создаем с помощью createEmptyMovieClip для каждой картинки мувиклип-контейнер, в который будет загружаться эта картинка. Это нужно для того, чтобы не загружать каждый раз одну и ту же картинку, а загрузить их один раз, а далее, уже с помощью _visible (или _alpha) менять видимость этой картинки. 7. Каждому контейнеру, в который будет загружена картинка, делаем _visible = false 8. Каждый контейнер заносим в массив, — это нужно для того, чтобы было проще выбирать произвольную картинку для показа 9. С помощью MovieClipLoader загружаем картинки и аналогичным образом, как с файлами, после очередного события загрузки сравниваем кол-во загруженных картинок с их общим кол-вом. 10. Как только все картинки загрузились, запускаем функцию показа произвольной картинки по интервалу, с помощью функции setInterval. И на этом моменте у вас получится массив с контейнерами, в котороых лежат картинки, и у каждого контейнера _visible = false. В функции показа произвольной картинки запоминаем тот контейнер, который показывается, потом генерируем новый контейнер, который должен показываться и, если текущий контейнер и новый совпадают — генерируем еще раз. Это для того, чтобы избежать ситуации, когда показывается, например, первая картинка, потом опять же, первая, потому, что Math.random() выдал такое число.
__________________
hauts.ru |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|