![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2012
Сообщений: 10
|
Здравствуйте! Создаю тест для студентов, в котором используются различные типы тестовых заданий. Необходимо добавить кнопку "Назад", которая бы возвращала к предыдущему вопросу. Проблема с подсчетом верных ответов. Например, если человек ответил на первый вопрос, перешел на второй, потом снова вернулся на первый и ответил по другому, то подсчет баллов за этот ответ ведется дважды.
При использовании RadioButton сейчас обработка результата стоит на кнопке далее (т.е. человек выбирает ответ, нажимает далее и в этот момент проверяется, правильный он или нет). При использовании CheckBox (выбор нескольких правильных ответов) - на каждом флажке написан код обращения к функции. Функция простейшая - если выделены правильные ответы-флажки, то ответ правильный и идет начисление баллов. P.S. Я - новичок)) Буду благодарна хотя бы за словесное описание, как нужно организовать проверку ответов, чтобы кнопка Назад работала как надо, и двойного подсчета результатов не было. Предполагаю, что ответы должны проверяться на переходе на последний кадр, но как это организовать, не знаю. |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
В самом простом случае, навскидку, создайте первый кадр без теста, в нем уже создайте массив для хранения результатов теста.
Первый "пустой" кадр нужен для того, чтобы не создавать новый массив при переходе к первому вопросу. То есть сначала один раз объявляем массив для сохранения результатов, а потом уже заносим в него ответы. В общем, у меня есть исходник, который очень похожим образом работает и, думаю, поможет вам. test_example.rar Если будут вопросы или нужно будет понизить версию исходника — обращайтесь.
__________________
hauts.ru |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 10
|
Спасибо за идею и за образец. Смысл мне в общем понятен, но чтобы понять код построчно, нужно еще разбираться с языком. Просто у меня написано в целом всё более примитивно.
Например: // stop(); prav_otv=0; neprav_otv=0; ball=0; // на первом, титульном кадре, на слое actions on(click) { _parent.func_otv(this); } // на каждом компоненте CheckBox o1.enabled=true; o2.enabled=true; o3.enabled=true; o4.enabled=true; o1.selected=false; o2.selected=false; o3.selected=false; o4.selected=false; function func_otv(component) { if ((o1.selected==true) && (o2.selected==false) && (o3.selected==true) && (o4.selected==true)) { prav_otv=prav_otv+1; ball=ball+2; } } // на слое actions, где расположены CheckBoxы, oX - это Instance Name каждого CheckBoxа on(release) { gotoAndStop("v-2"); } // на кнопке перехода на следующий вопрос с вопроса с CheckBox on(release) { if (o2.selected==true) { prav_otv=prav_otv+1; ball=ball+1; } gotoAndStop("v-3"); } // на кнопке перехода на след.вопрос с вопроса с радиокнопками. stop(); res_prav=prav_otv; res_neprav=22-res_prav; ballov=ball; // на последнем слайде, где расположены поля типа Dynamic text, в которых и выводится количество правильных ответов и набранных баллов Добавлено через 1 минуту Думаю, что из-за кнопки Назад придется переписать весь этот примитивный код))) Добавлено через 26 часов 59 минут Вопрос снят. Спасибо Последний раз редактировалось mooncar; 07.10.2012 в 12:42. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|