Realizo un multimedia dirigido a niños en el que en una de las actividades aparece un cuestinario de "sí" o "no", realmente poner preguntas y programar para que aparezca si es correcto o incorrecto lo que respondieron es sencillo, pero lo que busco es generar el cuestionario aleatoriamente desde un archivo XML, básicamente el asunto es que lea el XML, saque una pregunta, compare si ya apareció, si ya lo hizo, que elija otra y así hasta que encuentre una no usada, luego, que esa pregunta la asigne a un campo de texto dinámico y como cada pregunta viene anidada con otro campo de texto, también lo lea y si es cierto valor, entonces "Sí" es la respuesta correcta, si es el otro valor, "No" es la correcta. Son 6 preguntas las que se eligen y el mismo número aparece en el XML, sólo se cambia el orden en que aparecen.
El problema es que cuando corro el multimedia, me aparece "undefined", el código en el fotograma clave es:
stop();
stopAllSounds(); //sonidos
fondo.gotoAndStop(2); //fondo de pantalla
//definición random
function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
comparador = new Array(); //variable que valida si ya se asignó la pregunta actual
preguntas = new Array(); // array que almacena las preguntas
respuestas = new Array(); //array que almacena las respuestas
//xml
var pregoso:XML = new XML();
pregoso.ignoreWhite = true;
for (var i=0; i<=5; i++) { //ciclo para asginar las 6 preguntas al azar
var aleat:Number = randRange(0, 5); //número aleatorio
for (var a = 0; a<=5; a++) { //ciclo que valida que no se repitan las preguntas
if (comparador[a]!=aleat){
var miXML:XMLNode = this.firstChild.childNodes[aleat];
preguntas[i]= miXML.childNodes[0].firstChild.nodeValue; //se asgina la pregunta del XML
respuestas[i]= miXML.childNodes[1].firstChild.nodeValue; //se asigna la respuesta
comparador [i]= aleat; //se le dice que ese número de pregunta ya apareció.
}
}
}
//asignación de preguntas a texto dinámico
p_oso0.text = "preguntas[0]"; //lo hice sólo para comprobar y efectivamente aparece el texto tal cual
p_oso1.text = preguntas[1]; //se asigna el valor del array al campo de texto dinámico
p_oso2.text = preguntas[2];
p_oso3.text = preguntas[3];
p_oso4.text = preguntas[4];
p_oso5.text = preguntas[5];
El XML contiene lo siguiente:
<preguntasOso>
<pregunta>
<frase>Polar Bears swim.</frase>
<valor>Y</valor>
</pregunta>
<pregunta>
<frase>Polar Bears eat fish.</frase>
<valor>Y</valor>
</pregunta>
<pregunta>
<frase>Polar Bears have fur.</frase>
<valor>Y</valor>
</pregunta>
<pregunta>
<frase>Polar Bears have cubs.</frase>
<valor>Y</valor>
</pregunta>
<pregunta>
<frase>Polar Bears play.</frase>
<valor>Y</valor>
</pregunta>
<pregunta>
<frase>Polar Bears have feathers.</frase>
<valor>Y</valor>
</pregunta>
</preguntasOso>
Debo aclarar que soy principiante usando XML y para esto estuve leyendo tutoriales e interpretando sentencias y demás, así que sé que podría estar mal en algo muy básico, pero no logro verlo, espero me ayuden.
Por cierto, no he agregado el código para que a partir de la variable "respuestas" se asigne el valor a los botones de respuesta. Agradesco el tiempo que tomaron en leer esto.