Foros del Web » Creando para Internet » Flash y Actionscript »

Score: Acumulador no funciona

Estas en el tema de Score: Acumulador no funciona en el foro de Flash y Actionscript en Foros del Web. Hola, Estoy haciendo un juego en AS3 de una trivia y como obviamente sabemos debe tener un score en donde vaya marcando los valores, al ...
  #1 (permalink)  
Antiguo 27/02/2012, 16:05
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Score: Acumulador no funciona

Hola,
Estoy haciendo un juego en AS3 de una trivia y como obviamente sabemos debe tener un score en donde vaya marcando los valores, al respecto tengo lo siguiente:

En la clase: grilla.as

Código vb:
Ver original
  1. var barra:score = new score();
  2. barra.x = 80;
  3. barra.y = -200;
  4. barra.name = "barra";
  5. barra.puntajeTXT.text = String(barra.getScore());
  6. addChild(barra);
  7.  
  8. private function seleccionarOpcion(m:MouseEvent):void       {
  9.     var puntaje:Number; // variable para obtener el valor de la opción
  10.     var opt:String; // variable para guardar la opcion elegida
  11.            
  12.     // Realizo el tween sobre el movieclip
  13.     TweenMax.to(MovieClip(m.currentTarget), 0.5, { scaleY: -1 } );
  14.            
  15.     // Oculto el movieclip luego de seleccionarlo
  16.     MovieClip(m.currentTarget).visible = false;
  17.            
  18.     // Remuevo el listener de la opción seleccionada
  19.             MovieClip(m.currentTarget).removeEventListener(MouseEvent.CLICK, seleccionarOpcion);
  20.            
  21.     // le asigno el valor de la opcion a la variable puntaje
  22.     puntaje = Number(m.currentTarget.clipText.text);
  23.            
  24.     // almaceno la opcion seleccionada
  25.     opt = String(m.currentTarget.name).substring(6).toString();
  26.            
  27.     // Guardo la opción para luego varificar el total de respuestas
  28.     opcionesPendientes.push(m.currentTarget.name);
  29.        
  30.     // genero una instancia generarTrivia
  31.     var iniciarTrivia:generarTrivia = new generarTrivia();
  32.     iniciarTrivia.x = 0;
  33.     iniciarTrivia.y = 0;
  34.     iniciarTrivia.name = "iniciarTrivia";
  35.     iniciarTrivia.recibirPuntaje(puntaje);
  36.     iniciarTrivia.recibirOpcion(opt);
  37.            
  38.     // lo agrego al escenario
  39.     addChild(iniciarTrivia);
  40.            
  41.            
  42.     if ( opcionesPendientes.length == 48 ) {
  43.         estado == true;
  44.         (parent.parent as MovieClip).gotoAndStop(7);
  45.        
  46.                 //(parent.parent.parent as MovieClip).scoreText.text = score;
  47.        
  48.                parent.removeChildAt(0);
  49.                
  50.  
  51.             } else {
  52.  
  53.                 estado == false;
  54.             }
  55.  
  56.  
  57. }

En generarTrivia.as tengo

Código vb:
Ver original
  1. public class generarTrivia extends MovieClip
  2.     {
  3.         private var opcion:String;
  4.         private var pregunta:String;
  5.         private var respuesta:Array = [];
  6.         private var resultado:Array = [];
  7.        
  8.         private var respuestas:Array = [];
  9.         private var resultados:Array = [];
  10.         private var radioGroup1:RadioButtonGroup = new RadioButtonGroup("Questions");
  11.         private var xmlLoader:URLLoader = new URLLoader();
  12.         private var xmlData:XML;
  13.         protected var time:Timer;
  14.        
  15.         private var puntaje:Number;
  16.         private var grid:Array = [];
  17.        
  18.        
  19.         public function generarTrivia()
  20.         {
  21.  
  22.             generarVentana();
  23.         }
  24.        
  25.         public function recibirOpcion(op:String):void {
  26.            
  27.             this.opcion = op;
  28.            
  29.         }
  30.        
  31.         public function recibirPuntaje(puntajeOpcion:Number):void {
  32.            
  33.             puntaje = puntajeOpcion;
  34.             trace("Puntaje recibido: " + puntaje);
  35.            
  36.         }
  37.  
  38. private function recibirRespuesta(m:MouseEvent)
  39.         {
  40.            
  41.             var contPre:Array = [this.respuesta, this.resultado];
  42.            
  43.             for (var a:uint = 0; a < contPre[0].length; a++)
  44.             {
  45.                
  46.                 // Valido la respuesta recibida contra los valores del XML
  47.                 if (this.radioGroup1.selection.value == contPre[0][a] && contPre[1][a] == "Correcto")
  48.                 {
  49.                    
  50.                     result_txt.text = "Correcto";
  51.                     var barrias:score = new score();
  52.                     barrias.sendPuntaje(puntaje)
  53.                     trace(barrias.accuScore+puntaje)
  54.                     //(parent.getChildByName("barra") as MovieClip).puntajeTXT.text = score;           
  55.                     break;
  56.                 }
  57.                 else
  58.                 {
  59.                    
  60.                     result_txt.text = "Incorrecto";
  61.                    
  62.                 }
  63.                
  64.             }
  65.            
  66.             agregarTimer();
  67.            
  68.  
  69.            
  70.            
  71.            
  72.         }

y en score.as tengo:

Código vb:
Ver original
  1. public class score extends MovieClip {
  2.        
  3.        
  4.         public var finalScore:Number = 0;
  5.         public var accuScore:Number = 0;
  6.        
  7.        
  8.         public function score() {
  9.             // constructor code
  10.         }
  11.        
  12.         public function sendPuntaje(ptj:Number) {
  13.              accuScore = accuScore + ptj;
  14.              finalScore = accuScore;
  15.         }
  16.        
  17.         public function getScore():Number {
  18.            
  19.             return finalScore;
  20.            
  21.         }
  22.        
  23.     }

El tema es el puntaje va y viene lo mas bien, el valor de la pregunta es el correcto el tema es que la variable accuScore no esta acumulando el score para ir mostrandolo luego de cada pregunta en base a las respuestas que de el usuario, a alguien se le ocurre que puede estar pasando?
  #2 (permalink)  
Antiguo 28/02/2012, 07:47
 
Fecha de Ingreso: julio-2007
Mensajes: 15
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Score: Acumulador no funciona

Para este caso identifique mi error, estoy instanciando por segunda vez la clase score la cual me vuelve a 0 las variables declaradas para el acumulador haciendo que el mismo se reseteé constantemente.

Estoy pensando otra solución que me parece que podría funcionar: cuando creo la instancia de score en grilla puedo declarar una variable pública la cual al llegar el momento de validar la respuesta en la instancia creada para generarTrivia puedo actualizarla con el puntaje de la respuesta correcta. Luego en la clase score genero una función en donde se acumule el puntaje obtenido en la variable pública
  #3 (permalink)  
Antiguo 28/02/2012, 22:55
Avatar de ocesitaro  
Fecha de Ingreso: diciembre-2011
Ubicación: Carabayllo
Mensajes: 274
Antigüedad: 10 años, 6 meses
Puntos: 36
Respuesta: Score: Acumulador no funciona

Cita:
Iniciado por martingb Ver Mensaje
Para este caso identifique mi error, estoy instanciando por segunda vez la clase score la cual me vuelve a 0 las variables declaradas para el acumulador haciendo que el mismo se reseteé constantemente.

Estoy pensando otra solución que me parece que podría funcionar: cuando creo la instancia de score en grilla puedo declarar una variable pública la cual al llegar el momento de validar la respuesta en la instancia creada para generarTrivia puedo actualizarla con el puntaje de la respuesta correcta. Luego en la clase score genero una función en donde se acumule el puntaje obtenido en la variable pública
Te estas complicando demasiado, bien pudiste haberlo echo con un 2 array multidimensionales, o usar un xml, un timer, una variable tipo uint en tu .as principal.

Etiquetas: actionscript3.0, acumulador, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:59.