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

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

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

Регистрация: Jun 2009
Адрес: Severodvinsk
Сообщений: 33
Smile Случайный вызов мувиклипов

Делаю тест во флеше. 50 вопросов. Надо сделать так, чтобы случайным образом по очереди загрузилось 15 из 50, причём те, которые появлялись раньше, не появлялись. Не подскажете, как сделать?
__________________
flash гном + Math.random (=сумасшедший дом)!!!;

Старый 05.10.2009, 17:33
woland24 вне форума Посмотреть профиль Отправить личное сообщение для woland24 Найти все сообщения от woland24
  № 2  
Ответить с цитированием
woland24

Регистрация: Oct 2009
Сообщений: 50
В каком виде и где хранятся вопросы?

Старый 05.10.2009, 17:45
MaskiShow вне форума Посмотреть профиль Отправить личное сообщение для MaskiShow Найти все сообщения от MaskiShow
  № 3  
Ответить с цитированием
MaskiShow

Регистрация: Feb 2009
Сообщений: 108
Недавно такое же надо было делать. В итоге для меня оптимальным был вариант ниже. Если вам единовременно надо вывести X разных вопросов из Y, можно сделать примерно так:

Код:
    max = 15; all = 50
array = new Array (max) // массив с номерами вопросов

    u = 0
    while (u == 0) {
        for (i = 1; i <= max; i++) {
            array[i] = Math.randomInt(all) + 1 // случайный номер вопроса
            }
        u = array.sort(Array.RETURNINDEXEDARRAY | Array.UNIQUESORT)
    }
Здесь тупо забиваем массив случайными номерами, и если есть совпадения - переделываем. Отношение Y/X должно быть не менее 4-5 для хорошей работы скрипта, добавьте еще вопросов или уменьшите до 10 количество выводимых.


Последний раз редактировалось MaskiShow; 05.10.2009 в 17:49.
Старый 05.10.2009, 17:51
true11 вне форума Посмотреть профиль Отправить личное сообщение для true11 Посетить домашнюю страницу true11 Найти все сообщения от true11
  № 4  
Ответить с цитированием
true11
 
Аватар для true11

Регистрация: Feb 2009
Сообщений: 74
Отправить сообщение для true11 с помощью ICQ
Мм можно сделать так:
Код AS1/AS2:
var questions = new Array('Вопрос 1', 'Вопрос 2', 'Третий вопрос','Четвертый вопрос','Пятый вопрос','шестой вопрос'); // Массив с вопросами
var questions_asked:Array; // Массив, в котором будем хранить либо 0(не спрашивался) либо 1(спрашивался).
Далее, приравниваем массив questions_asked к questions по длине и все его значения приравниваем к нулю. Т.е. у нас еще ни один вопрос ни спрашивался.

Код AS1/AS2:
for(i=0;i<questions.length;i++){
	questions_asked[i]=0;
	}
Далее, делаем функцию, которая считывает все единички в массиве questions_asked(если они есть) и возвращает массив:

Код AS1/AS2:
function getRestrict():Array{
	var restricted:Array;
	var count:Number=0;
	for(i=0;i<questions.length;i++){
	if(questions_asked[i] == 1){
		count++;restricted[count]=i;
		}
	}
	return restricted;
}
далее, рандомим число от 0 до questions.length, кроме тех, что возвращает функция getRestrict().
И задаем вопрос из массива questions[№вопроса]

Ммм.. ну идея примерно такая

Старый 05.10.2009, 18:31
lumaca вне форума Посмотреть профиль Отправить личное сообщение для lumaca Найти все сообщения от lumaca
  № 5  
Ответить с цитированием
lumaca

Регистрация: Sep 2009
Сообщений: 61
Можно проще: создать массив вопросов и выбрав один сразу удалять его из массива.

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

Регистрация: Jun 2009
Адрес: Severodvinsk
Сообщений: 33
Вопросы хранятся в библиотеке в виде клипов. Надо, чтобы вызывался один из них и так 15 раз. Причём клипы не должны повторяться.
__________________
flash гном + Math.random (=сумасшедший дом)!!!;

Старый 06.10.2009, 17:26
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
А как вы их вообще вызываете - аттачите, надо полагать?
Ну сделаете тогда по любой из вышеприведенных схем, просто в массив загоните имена ссылок на ваши мувики в библиотеке.
И вообще, нужно сразу правильно вопросы задавать - для экономии чужого и своего времени.


Последний раз редактировалось mooncar; 06.10.2009 в 17:30.
Старый 06.10.2009, 17:38
flashowl вне форума Посмотреть профиль Отправить личное сообщение для flashowl Найти все сообщения от flashowl
  № 8  
Ответить с цитированием
flashowl
 
Аватар для flashowl

Регистрация: Jun 2009
Адрес: Severodvinsk
Сообщений: 33
Всё-таки я не понял, как сделать, чтобы клипы с вопросами выводились на раб. поле
__________________
flash гном + Math.random (=сумасшедший дом)!!!;

Старый 06.10.2009, 17:46
woland24 вне форума Посмотреть профиль Отправить личное сообщение для woland24 Найти все сообщения от woland24
  № 9  
Ответить с цитированием
woland24

Регистрация: Oct 2009
Сообщений: 50
у тебя в именах клипов есть числа? Если нет то допиши. Забивай массив 15 числами одним из способов описаных выше, а потом(или там же при записи в массив) делай клип видимым(до этого все клипы сделать невидимыми) таким способом
Код AS1/AS2:
path_to_clip["clips_name" + num]._visible = true;
где num - это число из массива номеров вопросов

Старый 06.10.2009, 17:48
true11 вне форума Посмотреть профиль Отправить личное сообщение для true11 Посетить домашнюю страницу true11 Найти все сообщения от true11
  № 10  
Ответить с цитированием
true11
 
Аватар для true11

Регистрация: Feb 2009
Сообщений: 74
Отправить сообщение для true11 с помощью ICQ
Код AS1/AS2:
randNum=4; // твое рандомное число
this.attachMovie("ClipName"+randNum, "newClipName", this.getNextHighestDepth(), {_x:newX, _y:newY});
где ClipName - имя клипа в библиотеке(export for ActionScript)
newClipName - имя приаттаченного клипа(по этому имени к нему потом можно будет обращаться)
newX - в какой _x его поместить, newY - координата _y

когда человек ответил - удаляй клип - removeMovieClip. и не будет лишних клипов


Последний раз редактировалось true11; 06.10.2009 в 17:51.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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