Форум 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=90259)

poorjorik 06.01.2007 19:35

Неповторяющийся рандом.
 
Друзья, бьюсь уже 3 дня. думал обойтись без помощи форума, да видать по-другому невозможно.
Есть следующая задумка (почти реализованная):
Мувик из N кадров, на каждом кадре стоп, в каждом кадре разные объекты, назовем его БИБЛИОТЕКА.
Мувик в который вставлен БИБЛИОТЕКА (назовем его ВЫБОРКА) и прописано следующее:
--------------------------------------------------------
Код:

onClipEvent (load) {
        var playscene=[1,2,3,4,5,6,7,8,9];
        n=random(playscene.length);
        this.gotoAndStop(n);
        playscene.splice(n,1);
}

--------------------------------------------------------
Идея такая - рандомно выбирается кадр из БИБЛИОТЕКА, и в ВЫБОРКА отображается соответсвенно.
Затем есть еще один мувик, содержащий ВЫБОРКА и код: дубликат симбл.
Итого пытаюсь получить но не получается: чтобы дублированные объекты генерились рандомно, но ни один из них не повторялся. Генерятся рандомно, но иногда бывают повторения.

В экшене я не очень шарю, но понимать вроде могу. Книжка под боком. ПЫтался сделать это (основано на исходнике генерящем неповторябщися рандом из 10 цифр):
--------------------------------------------------------
Код:

onClipEvent (load) {
        Temp = "";
        i = 1;
while (Number(i)<>11) {
        rnd = random(10);
        x = 1;
        while (Number(x)<>Number((Number(length(Temp))+1))) {
                if ((substring(Temp, x, 1)) eq rnd) {
                        rnd = "";
                }
                x = Number(x)+1;
        }
        if (rnd ne "") {
                Temp = rnd;
                i = Number(i)+1;
        }
}
        this.gotoAndStop(temp);
}

--------------------------------------------------------
Итог тот=же, повторения наблюдаются.

Может я просто неправильно мыслю. Если есть другой путь, пожалуйста подскажите. Могу выслать исходник, который я вымучиваю из исходника смарт клип.

iNils 06.01.2007 19:46

1. Для оформления своего кода, надо использовать теги
2. Надо пользоваться поиском
3. В разделе ActionScript, писать вопросы с синтаксисом onClipEvent и подобным, запрещено. Читайте правила подраздела.

poorjorik 06.01.2007 19:51

Прошу прощения, но как я уже сказал, экшн скрипт знаю плохо, а просто могу разобраться что написано, пользуясь книгой. Чем заменить on...() я не знаю. Поиском я пользовался. Ничего подходящего найти не удалось.

iNils 06.01.2007 19:53

Код:

var arrayA:Array = new Array (0, 1, 2, 3, 4, 5, 6);
var arrayB:Array = arrayA.concat()
for (var i:Number = 0; i < arrayA.length; i++) {
        var rnd:Number = Math.floor (Math.random () * arrayB.length);
        var del:Array = arrayB.splice (rnd, 1);
        trace (arrayA[del]);
}


poorjorik 06.01.2007 20:03

trace (arrayA[del]); простите что делает эта строчка, и какую переменную мне собствеено надо брать чтобы перейти на рандомный кадр?

iNils 06.01.2007 20:08

Выдает в трасе-окно случайный результат из массива.

poorjorik 06.01.2007 20:15

Код:

var arrayA:Array = new Array (0, 1, 2, 3, 4, 5, 6);
var arrayB:Array = arrayA.concat()
for (var i:Number = 0; i < arrayA.length; i++) {
        var rnd:Number = Math.floor (Math.random () * arrayB.length);
        var del:Array = arrayB.splice (rnd, 1);
        this.gotoAndStop(arrayA[del]);
}

если сделать так то вообще рандом пропадает. и все одинаковые. Объясните как для чайника пожалуйста

iNils 06.01.2007 20:23

Честно говоря я не понял чего вы хотите и дал вам код которые генерит последовательно случайное и уникальное (в каждом запуске) значение из массива возможных значений.

poorjorik 06.01.2007 20:27

в принципе мне это и надо. теперь осталось тольок выяснить arrayA[del] - это и есть это значение? и второе: "при каждом запуске" это как?

poorjorik 06.01.2007 20:30

Вложений: 1
вот посмотрите пожалуйста что мне нужно (работает некоректно, есть повторения)


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

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