Comunidad de diseño web y desarrollo en internet online

PROBLEMA CON CONTADOR

Citar            
MensajeEscrito el 06 Sep 2010 03:16 pm
Hola a todos.
Estoy haciendo un test de preguntas en flash. El caso es que tengo un contador de respuestas correctas e incorrectas. El contador cuenta por respuesta correcta clicada. Es decir que si una pregunta tiene 3 respuestas correctas, el contador puede sumar hasta 3. El problema es que mientras te estás pensando la respuesta y vas clicando en las diferentes respuestas, el contador ya va sumando a razón de clics con lo que el usuario ya ve antes de acceder a la pantalla de resultados si está respondiendo bien o no. Lo correcto sería que el contador reflejara las respuestas correctas e incorrectas de la pregunta anterior y que cuando accediera a la pantalla de resultados actualizara los marcadores y así sucesivamente.

Adjunto el código del frame donde están las preguntas y respuestas. Comentar que "resultados" corresponde al nombre de instancia que tiene el botón de acceso a los resultados.

Código :

stop();
var userAnswer = new Array();
var correctAnswers = [1,2,4];
numQuestions = correctAnswers.length;
resultados.onRelease = function() {
   gradeUser();
};

function gradeUser()
{
   if (userAnswer.length == correctAnswers.length)
   {
      //trace("mateix numero seleccions");
      var totalCorrect = 0;
      for (i = 0; i < correctAnswers.length; i++)
      {
         //trace("comprobar numero:" + userAnswer[i]);
         for (j = 0; j < correctAnswers.length; j++)
         {
            //trace(correctAnswers[j]);
            if( userAnswer[i]==correctAnswers[j]){
               totalCorrect++;
            }
         }
         
      }
      if (totalCorrect == correctAnswers.length)
      {
         //trace("correcte");
         gotoAndStop("p2_si");
      }
      else
      {
         //trace("incorrecte");         
         gotoAndStop("p2_no");
      }
   }
   else
   {
      //trace("numero diferent seleccions");
      gotoAndStop("p2_no");
   }

}

function answer(choice) {
   userAnswer.push(choice);
}
tick1.onRelease = function(choice) {
   if (tick1.tickBox._currentFrame == 2) {
      answer(1);
      numOfQuestionsAnsweredCorrectly++;
   } else if (tick1.tickBox._currentFrame == 1) {
      userAnswer.pop();
      numOfQuestionsAnsweredCorrectly--;
   }   
};
tick2.onRelease = function(choice) {
   if (tick2.tickBox._currentFrame == 2) {
      answer(2);
      numOfQuestionsAnsweredCorrectly++;
   } else if (tick2.tickBox._currentFrame == 1) {
      userAnswer.pop();
      numOfQuestionsAnsweredCorrectly--;
   }   
};
tick3.onRelease = function(choice) {
   if (tick3.tickBox._currentFrame == 2) {
      answer(3);
      numOfQuestionsAnsweredIncorrectly++;
   } else if (tick3.tickBox._currentFrame == 1) {
      userAnswer.pop();
      numOfQuestionsAnsweredIncorrectly--;
   }   
};
tick4.onRelease = function(choice) {
   if (tick4.tickBox._currentFrame == 2) {
      answer(4);
      numOfQuestionsAnsweredCorrectly++;
   } else if (tick4.tickBox._currentFrame == 1) {
      userAnswer.pop();
      numOfQuestionsAnsweredCorrectly--;
   }   
};


Pues nada, espero haberme explicado bien. A ver si alguien sabe algo al respecto.

Por arch979

14 de clabLevel



 

msie8
Citar            
MensajeEscrito el 06 Sep 2010 07:53 pm
No le pongas el handler a cada checkbox (puedes poner solo el que mueve de frame, pero dentro del checkbox) Luego agrega un botón siguiente (que supongo ya existe) que es el que chequea respuesta a la siguiente. Allí verifica que casilla está en el segundo frame (tick1, tick2, tick3 o tick4) y en función de eso marcas correcta o incorrecta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Sep 2010 06:51 am
Hola Jorge,
no acabo de entender la solución que me propones. tick1,2,etc... són las casillas para cada respuesta y "resultados" el botón de acceso a la pantalla de puntuación. Lo que quiero es que el marcador no se actualize hasta que no clique en el botón "resultados", mientras tanto que marque la puntuación de la pregunta anterior. Tal y como lo tengo ahora, el marcador se actualiza a medida que clico en una respuesta u otra.

De todas formas gracias por la respuesta.

Por arch979

14 de clabLevel



 

msie8
Citar            
MensajeEscrito el 07 Sep 2010 02:40 pm
Ok, traduzco a nivel de código

No le pongas el handler a cada checkbox


quiere decir ...

tick1.onRelease, tick2.onRelease, tick3.onRelease, tick4.onRelease NO, borra todas esas líneas

puedes poner solo el que mueve de frame, pero dentro del checkbox


Para hacer una especie de componente "multiple choice", dentro de un MC nuevo pones 4 instancias de tu checkbox (en realidad radiobutton, ya que no puede haber mas de uno seleccionado por grupo), luego editas cualquiera de ellos y le pones:

Código ActionScript :

this.onPress = function(){
  for(var i in _parent) _parent.gotoAndStop(1)
  gotoAndStop((_currentframe==1)?2:1);
}


Luego en la función gradeUser recorres las cuatro respuestas viendo cual es la seleccionada

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.