Bom dia! José Ari, baseado na sua explicação, fiz um esqueminha aqui e acho que deve ser o que você precisa.
//Vetor para identificar as alternativas.
var alternativas:Array = new Array("A","B","C","D");
//Vetor para armazenar as alternativas escolhidas.
var respostas:Array = new Array();
//Vetor com o gabarito, você pode fazer como estava querendo, criar ele a partir do xml.
var gabarito:Array = new Array("A","B","C","D","A","B","C","D","A","B","C","D","A","B","C","D","A","B","C","D") ;
//Laço que vai colocar no palco as questões de acordo o tamanho do gabarito.
for (i = 0; i<gabarito.length; i++) {
//preencho o vetor respostas, com todos os índices, como nulo.
respostas[i] = null;
//carrego da biblioteca para o palco os movieclip de questões
var Questoes:MovieClip = this.attachMovie("questao", "questao"+i, i);
//Coloco no campo pergunta uma "descrição", você pode aqui, puxar isso de um XML, fica mais dinâmico.
Questoes.pergunta.text = "Pergunta"+(i+1);
//Crio uma propriedade "id" para o mc Questão, pois vou precisar saber esse valor qdo marcar a resposta na questão
Questoes.id = i;
//Aqui reduzi um pouco para caber no meu palco 800x600 as 20 questões, fica a seu critério
Questoes._xscale = Questoes._yscale = 45;
//Aqui faço o posicionamento das questões no eixo X, o valor 4 indica que vai ter 4 colunas, e eu pego o resto da divisão por 4
//e posiciono o primeiro mc na posição 10 na coordenada X do palco, e com 10 pixel de distância entre uma questão e a próxima
Questoes._x = (i%4)*(Questoes._width+10)+10;
//A mesma coisa é feita com o posicionamento das questões no eixo Y, lembrando ainda que o valor 4, indica que vou ter 4 colunas
//de perguntas, isso pode ser mudado e vc deixa da forma que achar mais conveniente.
//Outra coisa, a distância entre os mc de questões, é controlada por esse valor 10 que estão dentro dos parenteses, tanto no Y, como
//no X, o outro valor 10, corresponde onde eles iniciarão seu posicionamento no palco.
Questoes._y = Math.floor(i/4)*(Questoes._height+10)+10;
//Laço para identificar as alternativas de cada questão
for (j = 0; j<alternativas.length; j++) {
//crio para cada alternativa uma propriedade letra, que recebe o valor do vetor alternativas, vai servir para mim saber qual a letra que
//eu selecionei naquela questão.
Questoes["resp"+alternativas[j]].letra = alternativas[j];
//crio também uma outra propriedade "id" que irá controlar qual item foi marcado para desmarcar os outros
Questoes["resp"+alternativas[j]].id = j;
//função onPress...rissss
Questoes["resp"+alternativas[j]].onPress = function() {
//Ao pressionar a alternativa, chamo a função MarcaResposta, passando alguns parâmetro, tipo:
//a propriedade "id" da alternativa marcada;
//a propriedade "id" da questão;
//e a propriedade "letra" da alternativa marcada
MarcaResposta(this.id, this._parent.id, this.letra);
}
}
}
//Função que fará o tratamento das alternativas marcadas em cada questão.
function MarcaResposta(resposta, pergunta, letraSelect) {
//Laço para percorrer as alternativas da questão escolhida
for (i=0; i<alternativas.length; i++) {
//Testo se o valor i é diferente do parâmetro 'resposta (id da alternativa)', isso indica que, não sendo aquela alternativa clicada
if (i != resposta) {
//então, desmarque, ou seja, mando para o frame "desmarcado"
_root["questao"+pergunta]["resp"+alternativas[i]].gotoAndStop("desmarcado");
} else {
//i sendo igual ao parâmetro resposta, então indica que eu cliquei naquela alternativa, considerando isso, mando para o frame "marcado"
_root["questao"+pergunta]["resp"+alternativas[i]].gotoAndStop("marcado");
//adiciono no vetor respostas, no índice correspondente a questão escolhida, a letra marcada.
respostas[pergunta] = letraSelect;
}
}
//Na sequência, testo se todas as questões foram respondidas, chamado a função confereMarcadas que fará esse tratamento
if (confereMarcadas()) {
//Se foram todas marcadas, faço outro teste, para conferir, chamado a função confereSimulado que fará também o tratamento
trace("SIMULADO COMPLETADO");
if (confereSimulado()) {
//Se estiver tudo certo, dou os parabéns, daqui pra frente fica por sua conta e risco.....risssss
trace("PARABÉNS, VOCÊ ACERTOU TUDO");
} else {
//Senão, dou outro aviso, aqui também fica a seu critério, como vai dar sequência.
trace("VOCÊ NÃO ACERTOU TUDO");
}
} else {
//Se o usuário ainda não completou todo o simulado, acho opcional ficar dando algum aviso, mas pra todo caso, fica aí uma opção
//trace("Simulado incompleto");
}
}
//Função de tratameto, para verificar se todas as questões foram respondidas
function confereMarcadas():Boolean {
//variável de controle como true
var certo = true;
//laço que irá percorrer se o vetor respostas, tem algum índice com o valor nulo
for (i = 0; i<gabarito.length; i++) {
if (respostas[i] == null) {
//Se encontrar algum valor nulo no vetor respostas, altera o valor da variável de controle como false
certo = false;
}
}
//Testa a variável de controle, se for true, retorna true, caso contrário retorna false
if (certo) {
return true;
} else {
return false;
}
}
//Função de tratamento, para verificar o resultado do simulado, essa função só é chamada se a função anterior retornar 'true'
function confereSimulado():Boolean {
//variável de controle como true
var certo = true;
//laço vai verificar se as respostas são diferentes do gabarito.
for (i = 0; i<gabarito.length; i++) {
if (respostas[i] != gabarito[i]) {
//se alguma resposta não for igual, altera o valor da variável de controle como false
certo = false;
//manda a timeline do mc resposta errada para o frame "errado"
_root["questao"+i]["resp"+respostas[i]].gotoAndStop("errado");
} else {
//caso contrário, se for igual ao gabarito, mada a timeline do mc resposta para o frame "certo".
_root["questao"+i]["resp"+respostas[i]].gotoAndStop("certo");
}
}
//Testa a variável de controle, se for true, retorna true, caso contrário retorna false
if (certo) {
return true;
} else {
return false;
}
}
//========================================FIM======================================================
Deixei o código bem comentado para facilitar o entendimento
Se precisar dar uma olhada no FLA, pegue nesse link:
SIMULADO.FLA