ActionScript - Cambio "mc" con teclado

 
Vista:

Cambio "mc" con teclado

Publicado por Akaris (1 intervención) el 09/07/2018 23:41:20
Hola a todos, esto es lo que quiero hacer. Al apretar una tecla me ponga un arma pero si ya tenia un arma entonces se tiene que eliminar y crear otra.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function cambioarmaizquierda()
{
var sinarmas:Boolean = false;
if (boton1)
{
if (sinarmas == false)
{
armaIzquierda = new M202;
addChild(armaIzquierda).x=nuevojugador.x;
addChild(armaIzquierda).y=nuevojugador.y;
sinarmas= true;
}
 
else
{
removeChild (armaIzquierda);
sinarmas= false;
}
}
}
Lo que intente hacer es que dentro de la funcion "cambioarmaizquierda()" tenga una variable llamada sinarmas con propiedad falso y dentro de esa funcion al precionar el "boton1" tenga 2 condiciones si en ese momento la variable "sinarmas" tiene propiedad false crearia el arma y cambia la propiedad de la variable "sinamras" a true. En caso que no sea falso entonces entonces borra el arma y nuevamente pone a la variable "sinarmas" a false.

El resultado es que me crea una infinidad de armas si aprieto el boton y no me borra nada.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cambiar y eliminar armas al presionar un botón

Publicado por Alejandro (369 intervenciones) el 29/06/2023 16:56:52
Aquí hay algunas modificaciones que puedes hacer en tu código para lograr el comportamiento deseado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var sinarmas:Boolean = true; // Inicialmente no tienes armas
 
function cambioarmaizquierda() {
  if (boton1) {
    if (sinarmas) {
      if (armaIzquierda) {
        removeChild(armaIzquierda); // Elimina el arma existente si ya tienes una
      }
 
      armaIzquierda = new M202();
      addChild(armaIzquierda);
      armaIzquierda.x = nuevojugador.x;
      armaIzquierda.y = nuevojugador.y;
 
      sinarmas = false;
    } else {
      removeChild(armaIzquierda); // Si ya tienes un arma, elimínala
      sinarmas = true;
    }
  }
}

En este código, hemos movido la variable `sinarmas` fuera de la función `cambioarmaizquierda` y la hemos declarado globalmente. Esto se debe a que cada vez que se llama a la función, la variable `sinarmas` se reinicia a `false`, lo que provoca el comportamiento no deseado de crear múltiples armas.

Dentro de la función `cambioarmaizquierda`, primero verificamos si el botón (`boton1`) se ha presionado. Luego, verificamos el estado de `sinarmas`. Si es `true`, significa que no tienes un arma y puedes crear una nueva. En este caso, también verificamos si ya tienes un objeto `armaIzquierda` existente. Si es así, lo eliminamos antes de crear uno nuevo.

Si `sinarmas` es `false`, significa que ya tienes un arma y debes eliminarla. En este caso, simplemente eliminamos el objeto `armaIzquierda` y establecemos `sinarmas` en `true`.

Asegúrate de reemplazar `M202` con la clase correspondiente de tu arma.

Espero que esto resuelva el problema y logres el comportamiento esperado al presionar el botón para cambiar y eliminar armas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar