![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
|
Друзья, бьюсь уже 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:45. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
1. Для оформления своего кода, надо использовать теги
2. Надо пользоваться поиском 3. В разделе ActionScript, писать вопросы с синтаксисом onClipEvent и подобным, запрещено. Читайте правила подраздела. Последний раз редактировалось iNils; 06.01.2007 в 19:53. |
|
|||||
|
Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
|
Прошу прощения, но как я уже сказал, экшн скрипт знаю плохо, а просто могу разобраться что написано, пользуясь книгой. Чем заменить on...() я не знаю. Поиском я пользовался. Ничего подходящего найти не удалось.
|
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Цитата:
Если del это Array, то что такое arrayA[del]? Я бы так сделал: //исходный массив
var myArr:Array = new Array (0, 1, 2, 3, 4, 5, 6);
// копия
var arr:Array = myArr.concat();
//длинна массива, чтобы не искать ее лишний раз
var num:Number = arr.length;
while ( num > 0 ){
// случайный индекс
var rnd:Number = Math.floor (Math.random () * num );
// выдергиваем элемент с этим индексом из массива
trace (arr.splice( rnd, 1 ) );
// длинна массива уменьшилась
num--;
}
Автор, а повторения кстати неизбежны. Имеем ряд 1,2,3 Первое перемешивание 2,3,1 Второе перемешивание 1,3,2 цифра 1 повторилась - все как в жизни, так бывает. Если вам нужно избежать такой ситуации, надо исключать последний выпавший номер из нашей "лотереи". Последний раз редактировалось Kikasso; 09.01.2007 в 16:04. |
|
|||||
|
Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
|
trace (arrayA[del]); простите что делает эта строчка, и какую переменную мне собствеено надо брать чтобы перейти на рандомный кадр?
|
|
|||||
|
Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
|
если сделать так то вообще рандом пропадает. и все одинаковые. Объясните как для чайника пожалуйста
|
|
|||||
|
Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
|
в принципе мне это и надо. теперь осталось тольок выяснить arrayA[del] - это и есть это значение? и второе: "при каждом запуске" это как?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|