Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблема с функцией рендома (http://www.flasher.ru/forum/showthread.php?t=169561)

Student2k1 07.10.2011 14:27

Проблема с функцией рендома
 
Есть 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

думать некогда) как вариант попробуй заменить

Код AS1/AS2:

Math.random()*speedArray.length
на
random(speedArray.length)

и вобще)) чево это такое??)) выбирать рандомно из рандомного массива)) бред
если хочеш от 2 до 10 рандома то делай так:
Код AS1/AS2:

int(random(8)+2)



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

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