locked
dudando como programar un cambio de valor con retraso RRS feed

  • Pregunta

  • Estoy intentando que, al pulsar un botón en la pantalla del terminal para windows phone, un cuadrado se mueva de sitio durante unos segundos y luego vuelva a su posición original.

    El problema está en que soy un patata programando y tengo pocas alternativas :-P. 

    Esto es lo que tengo,  lo cual no es válido ya que, aunque cambie el valor de la variable  "rcuadrado1.Y  varias veces, este no se va a actualizar hasta que salga del metodo :S.   Supongo que tendría que utilizar una función para esto, pero no tengo ni idea :P.

    TouchCollection touches = TouchPanel.GetState();

    if (touches.Count > 0)
                {
                    TouchLocation touch = touches.First();
                   
                    if (touch.State == TouchLocationState.Pressed && rarriba.Contains((int)touch.Position.X, (int)touch.Position.Y))
                    {
                        Puntuacion1 ++;
                        contador = 500000000;
                        rcuadrado1.Y -= 40;
                        
                        while (contador > 0)
                        {
                            contador--;
                        }

                        if (contador == 0)
                        rcuadrado1.Y += 40;
                        
                            return;
                        }
                    }
                }

    Un saludo y gracias por adelantado.

    domingo, 1 de abril de 2012 21:43

Respuestas

  • Deberias definir los estados en los que se va a encontrar el cuadrado y actuar en consecuencia...

    algo así deberia mostrarte un camino... aunque yo lo implementaria todo dentro de una clase para poder aprovechar la funcionalidad para todos los botones que tengas...

    enum Estados {Normal,Mover_hasta_destino, Esperar_en_destino, Volver_a_casa}

    Estados estado = Estados.Normal;

    void Update(float Secs)
    {
         switch (estado)
         {
            case Estados.Normal:
               if (touch.State==... && rarriba.contains....
               {
                  PosicionInicial = Rcuadrado.posicion;
                  PosicionFinal = Rcuadrado.posicion + desplazaminento;
                  estado = Estados.Mover_hasta_destino;
                  duracion_mov = 1;
               }
               break;
            case Estados.Mover_hasta_destino:
                  duracion_mov -= Secs;
                  if (duracion_mov <0)
                  {
                      rcuadrado.Posicion = PosicionFinal;
                      duracion = 0.5f;
                      estado = Estados.Esperar_en_destino;
                  } 
                  else 
                  {
                      rcuadrado.Posicion += (PosicionFinal - rcuadrado.Posicion) * 0.1f;
                  }
                break;


       case Estados.Esperar_en_destino:
                  duracion_mov -= Secs;
                  if (duracion_mov <0)
                  {
                      duracion = 0.5f;
                      estado = Estados.Volver_a_casa;
                  }               
                break;


        case Estados.Volver_a_casa:
                  duracion_mov -= Secs;
                  if (duracion_mov <0)
                  {
                      rcuadrado.Posicion = PosicionInicial;
                      estado = Estados.Normal;
                  } 
                  else 
                  {
                      rcuadrado.Posicion += (PosicionInicial - rcuadrado.Posicion) * 0.1f;
                  }
                break;
    }



    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com


    lunes, 2 de abril de 2012 20:01

Todas las respuestas

  • Deberias definir los estados en los que se va a encontrar el cuadrado y actuar en consecuencia...

    algo así deberia mostrarte un camino... aunque yo lo implementaria todo dentro de una clase para poder aprovechar la funcionalidad para todos los botones que tengas...

    enum Estados {Normal,Mover_hasta_destino, Esperar_en_destino, Volver_a_casa}

    Estados estado = Estados.Normal;

    void Update(float Secs)
    {
         switch (estado)
         {
            case Estados.Normal:
               if (touch.State==... && rarriba.contains....
               {
                  PosicionInicial = Rcuadrado.posicion;
                  PosicionFinal = Rcuadrado.posicion + desplazaminento;
                  estado = Estados.Mover_hasta_destino;
                  duracion_mov = 1;
               }
               break;
            case Estados.Mover_hasta_destino:
                  duracion_mov -= Secs;
                  if (duracion_mov <0)
                  {
                      rcuadrado.Posicion = PosicionFinal;
                      duracion = 0.5f;
                      estado = Estados.Esperar_en_destino;
                  } 
                  else 
                  {
                      rcuadrado.Posicion += (PosicionFinal - rcuadrado.Posicion) * 0.1f;
                  }
                break;


       case Estados.Esperar_en_destino:
                  duracion_mov -= Secs;
                  if (duracion_mov <0)
                  {
                      duracion = 0.5f;
                      estado = Estados.Volver_a_casa;
                  }               
                break;


        case Estados.Volver_a_casa:
                  duracion_mov -= Secs;
                  if (duracion_mov <0)
                  {
                      rcuadrado.Posicion = PosicionInicial;
                      estado = Estados.Normal;
                  } 
                  else 
                  {
                      rcuadrado.Posicion += (PosicionInicial - rcuadrado.Posicion) * 0.1f;
                  }
                break;
    }



    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com


    lunes, 2 de abril de 2012 20:01
  • genial,  esto me viene al pelo, mi reto es hacer las cosas como se tienen que hacer en vez de chapuzarlo todo, voy a por la clase y luego meteré esto de los estados,     mil gracias ^^.
    martes, 3 de abril de 2012 19:49