2015-08-21 2 views
0

Я работал над тестовым проектом, который позже я включу в гораздо более крупную работу, которая представляет собой простую викторину. Я сделал массив с моими вопросами:Flash Сброс значений массива

var questions1:Array=["nitrogen dioxide","sulfur hexafluoride",..."] 

и во втором слое я сделал кнопку, что циклы через вопросы в случайном порядке.

import flash.events.MouseEvent; 

var qno=0;var rnd1; 
function change_question(){ 
rnd1=Math.ceil(Math.random()*questions1.length)-1; 
q.text=questions1[rnd1]; 
if(questions1[rnd1]=="X"){change_question();} 
questions1[rnd1]="X"; 
} 
change_question(); 

next_b.addEventListener(MouseEvent.CLICK, ButtonAction1); 
function ButtonAction1(eventObject:MouseEvent){ 
qno++;change_question(); 

} 

Эта часть отлично работает, потому что я следовал учебнику. Текст появляется в динамическом текстовом поле, которое я создал так, как должен. Этот учебник учил изменять значение массива на X с каждым выбором и игнорировать выбор другого вопроса каждый раз, когда он столкнулся с X

После того, как он проходит все вопросы, я в основном получаю бесконечный цикл в моем разделе вывода flash, потому что он не может найти больше значений, отличных от X. Я надеялся, что у кого-то есть информация о том, как нажимать кнопку, изменить массив на свои настройки по умолчанию, чтобы учитель (потому что это тот, для кого он нужен) имеет способ сброса файла, когда он достиг конца викторины ,

Спасибо всем!

ответ

1

В соответствии с моим пониманием вы хотели рандомизировать свои вопросы и после того, как были показаны все вопросы, которые вы хотели бы сбросить.

В соответствии с вашим кодом вы получаете случайный вопрос и обновляете тот же массив, нажимая значение 'X'. Вместо того, чтобы делать это, вам нужно сохранить массив, чтобы рандомизировать его положение. Чтобы вы могли использовать одно и то же значение, как только вы покроете все ваши вопросы

Я добавил код здесь.

import flash.events.MouseEvent; 

var qno=0;var rnd1; 
var questions1:Array=["nitrogen dioxide","sulfur hexafluoride","carbon dioxide","carbon monooxide"]; 
var nAttmeptedCount = 0; 
var shuffledLetters:Array; 
function change_question() 
{ 
    if(qno == questions1.length) 
    { 
     qno = 0; 
     resetQuestion() 
    } 
    else 
    { 
     q.text = questions1[shuffledLetters[qno]]; 
     qno++;  
    } 
} 

function resetQuestion() 
{ 

    shuffledLetters = new Array(questions1.length); 
    for(var i=0;i<shuffledLetters.length;i++) 
    { 
     shuffledLetters[i] = i; 
    } 

    shuffledLetters.sort(randomize); 
} 

function randomize (a : *, b : *) : int { 
    return (Math.random() > .5) ? 1 : -1; 
} 


resetQuestion() 
change_question(); 

next_b.addEventListener(MouseEvent.CLICK, ButtonAction1); 
function ButtonAction1(eventObject:MouseEvent){ 
change_question(); 

} 

В приведенном выше решении после отображения всех вопросов я автоматически сбрасывал вопросы. вы можете изменить код в соответствии с вашим требованием. Если вы хотите задать вопрос об ошибке, вы можете ввести код qno = 0;resetQuestion() при нажатии кнопки.

желающий выше решение работа для вас.

+0

какой-нибудь бесполезный код там. array.concat() получает копию, не нужно ко всему этому коду. – BotMaster

+0

@BotMaster array.concat() дает вам копию массива, только не помещая его в случайное положение. для рандомизации массива вам нужно ввести некоторую логику. –

Смежные вопросы