![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2009
Адрес: Severodvinsk
Сообщений: 33
|
Делаю тест во флеше. 50 вопросов. Надо сделать так, чтобы случайным образом по очереди загрузилось 15 из 50, причём те, которые появлялись раньше, не появлялись. Не подскажете, как сделать?
![]()
__________________
flash гном + Math.random (=сумасшедший дом)!!!; |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 50
|
В каком виде и где хранятся вопросы?
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 108
|
Недавно такое же надо было делать. В итоге для меня оптимальным был вариант ниже. Если вам единовременно надо вывести X разных вопросов из Y, можно сделать примерно так:
Здесь тупо забиваем массив случайными номерами, и если есть совпадения - переделываем. Отношение Y/X должно быть не менее 4-5 для хорошей работы скрипта, добавьте еще вопросов или уменьшите до 10 количество выводимых. Последний раз редактировалось MaskiShow; 05.10.2009 в 17:49. |
|
|||||
|
Мм можно сделать так:
var questions = new Array('Вопрос 1', 'Вопрос 2', 'Третий вопрос','Четвертый вопрос','Пятый вопрос','шестой вопрос'); // Массив с вопросами var questions_asked:Array; // Массив, в котором будем хранить либо 0(не спрашивался) либо 1(спрашивался). Далее, делаем функцию, которая считывает все единички в массиве questions_asked(если они есть) и возвращает массив: 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; } И задаем вопрос из массива questions[№вопроса] Ммм.. ну идея примерно такая ![]() |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 61
|
Можно проще: создать массив вопросов и выбрав один сразу удалять его из массива.
|
|
|||||
|
Регистрация: Jun 2009
Адрес: Severodvinsk
Сообщений: 33
|
Вопросы хранятся в библиотеке в виде клипов. Надо, чтобы вызывался один из них и так 15 раз. Причём клипы не должны повторяться.
__________________
flash гном + Math.random (=сумасшедший дом)!!!; |
|
|||||
|
Модрон-ветеринар
|
А как вы их вообще вызываете - аттачите, надо полагать?
Ну сделаете тогда по любой из вышеприведенных схем, просто в массив загоните имена ссылок на ваши мувики в библиотеке. И вообще, нужно сразу правильно вопросы задавать - для экономии чужого и своего времени. Последний раз редактировалось mooncar; 06.10.2009 в 17:30. |
|
|||||
|
Регистрация: Jun 2009
Адрес: Severodvinsk
Сообщений: 33
|
Всё-таки я не понял, как сделать, чтобы клипы с вопросами выводились на раб. поле
__________________
flash гном + Math.random (=сумасшедший дом)!!!; |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 50
|
у тебя в именах клипов есть числа? Если нет то допиши. Забивай массив 15 числами одним из способов описаных выше, а потом(или там же при записи в массив) делай клип видимым(до этого все клипы сделать невидимыми) таким способом
где num - это число из массива номеров вопросов |
|
|||||
randNum=4; // твое рандомное число this.attachMovie("ClipName"+randNum, "newClipName", this.getNextHighestDepth(), {_x:newX, _y:newY}); newClipName - имя приаттаченного клипа(по этому имени к нему потом можно будет обращаться) newX - в какой _x его поместить, newY - координата _y когда человек ответил - удаляй клип - removeMovieClip. и не будет лишних клипов ![]() Последний раз редактировалось true11; 06.10.2009 в 17:51. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|