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

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

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

Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
Question Неповторяющийся рандом.

Друзья, бьюсь уже 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.
Старый 06.01.2007, 19:46
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
1. Для оформления своего кода, надо использовать теги
2. Надо пользоваться поиском
3. В разделе ActionScript, писать вопросы с синтаксисом onClipEvent и подобным, запрещено. Читайте правила подраздела.
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 06.01.2007 в 19:53.
Старый 06.01.2007, 19:51
poorjorik вне форума Посмотреть профиль Отправить личное сообщение для poorjorik Найти все сообщения от poorjorik
  № 3  
Ответить с цитированием
poorjorik
 
Аватар для poorjorik

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

Старый 06.01.2007, 19:53
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код:
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]);
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 06.01.2007, 20:03
poorjorik вне форума Посмотреть профиль Отправить личное сообщение для poorjorik Найти все сообщения от poorjorik
  № 5  
Ответить с цитированием
poorjorik
 
Аватар для poorjorik

Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
trace (arrayA[del]); простите что делает эта строчка, и какую переменную мне собствеено надо брать чтобы перейти на рандомный кадр?

Старый 06.01.2007, 20:08
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Выдает в трасе-окно случайный результат из массива.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 06.01.2007, 20:15
poorjorik вне форума Посмотреть профиль Отправить личное сообщение для poorjorik Найти все сообщения от poorjorik
  № 7  
Ответить с цитированием
poorjorik
 
Аватар для poorjorik

Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
Код:
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]);
}
если сделать так то вообще рандом пропадает. и все одинаковые. Объясните как для чайника пожалуйста

Старый 06.01.2007, 20:23
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Честно говоря я не понял чего вы хотите и дал вам код которые генерит последовательно случайное и уникальное (в каждом запуске) значение из массива возможных значений.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 06.01.2007, 20:27
poorjorik вне форума Посмотреть профиль Отправить личное сообщение для poorjorik Найти все сообщения от poorjorik
  № 9  
Ответить с цитированием
poorjorik
 
Аватар для poorjorik

Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
в принципе мне это и надо. теперь осталось тольок выяснить arrayA[del] - это и есть это значение? и второе: "при каждом запуске" это как?

Старый 06.01.2007, 20:30
poorjorik вне форума Посмотреть профиль Отправить личное сообщение для poorjorik Найти все сообщения от poorjorik
  № 10  
Ответить с цитированием
poorjorik
 
Аватар для poorjorik

Регистрация: Oct 2002
Адрес: Москов сити.
Сообщений: 48
вот посмотрите пожалуйста что мне нужно (работает некоректно, есть повторения)
Вложения
Тип файла: rar slider-menu - my.rar (4.6 Кб, 85 просмотров)

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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