Jump to content

Recommended Posts

necesito ayuda con un problema de actionscript 3, tengo que entregar un proyecto final esta semana y estoy haciendo un videojuego en la plataforma adobe animate. Estoy estancado hace mas de 2 semanas en una parte que es un rompecabezas y quiero que cuando se termine de armar el rompecabezas pase a otra escena automaticamente o aparezca un boton por lo menos.

el codigo que use para cada pieza del rompecabezas es el siguiente:

//mover pieza1
ipieza1.addEventListener(MouseEvent.MOUSE_DOWN,arrastrar1);
function arrastrar1(e:MouseEvent){
 ipieza1.startDrag();
}

//soltar pieza1
ipieza1.addEventListener(MouseEvent.MOUSE_UP,soltar1);
function soltar1(e:MouseEvent){
 ipieza1.stopDrag();
if(ipieza1.hitTestObject(ihit1))
    {
        ipieza1.x=23;
        ipieza1.y=13;
    }
    else
    {
          ipieza1.x=461.95;
          ipieza1.y=13;
    }
    
    
}

siendo esta la posicion donde la pieza debe encajar cuando se acomoda en el rompecabezas
 ipieza1.x=23;
 ipieza1.y=13;

y quiero que cuando todas las piezas esten en su posicion final respectivamente se cambie de escena automaticamente o simplemente aparezca un boton, en total son 12 piezas y necesito que las 12 esten ahi y que no importe el orden en que las arme, y obviamente tOdas las piezas tienen el mismo codigo solo que cambiandoles el nombre y la ubicacion inical y final, el rompecabezas se arma sin problemas pero se queda ahi y no pasa nada, por eso quiero que cambie de escena apenas lo termine de armar o aparezca un boton.

el problema puede ser sencillo pero soy principiante y me cuesta mucho poder resolverlo, en si es que cuando todas las pieazs esten en su posicion final sin importar el orden en que las ponga me cambie de escena automaticamente o aparezca un boton, y puedo ser muy repetitivo pero no se si me exolique bien, muchas gracias.

POR FAVOR RESPONDAN URGENTE QUE TENGO 4 DIAS PARA SOLUCIONARLO, MUCHAS GRACIAS!!!

Edited by Josemy
Link to post
Share on other sites

Sin tener ni idea de las posibilidades de actionscript 3 se me ocurre una solución.

Si una vez colocadas en su sitio ya no se pueden mover solo debes añadir una variable para contar las piezas colocadas y comprobarla cada vez que se coloque una. Algo parecido a esto:

    {
        ipieza1.x=23;
        ipieza1.y=13;
        sumarPiezas();
    }
    ...
    
    
    
    //sumar piezas
    function sumarPiezas{
        piezasOK=piezasOK+1;
        if(piezasOK==12)
          {
            cambioEscena();
          }
    }

Si se pueden mover deberás restar un número cuando se mueva uno correctamente colocado.

Edited by APB
Link to post
Share on other sites
Hace 7 horas, Alex Balcazar dijo:

gracias por responder, yo estuve intentando con algunas variables que cree pero no lograba dar la suma de las piezas, en la parte de function requeria algo mas entre parentesis y no dejaba dejarlo asi nomas, luego en piezas OK=piezasOK+1 no me resultaba la suma de algunas piezas pero gracias a ti ya estoy a un paso mas cerca de logralo 

 

 

Link to post
Share on other sites

Otra solución sería que cada vez que se colocara una bien comprobara la posición de todas y si fuera la correcta cambiara de escena. Así no importa que se puedan mover después de colocarlas bien, no como antes.
Como no conozco el lenguaje probablemente debas ajustarlo.

    {
        ipieza1.x=23;
        ipieza1.y=13;
	comprobarPiezas()
    }
...



// Comprobando posicion piezas
function comprobarPiezas{
	if((ipieza1.x==23)&&(ipieza1.y==13)&&(ipieza2.x==23)&&...&&(ipieza12.y==13)){
		cambioEscena()
	}
}

 

Edited by APB
Link to post
Share on other sites
  • Josemy changed the title to ACTION SCRIPT 3.0

amigo ya pude gracias, solo falta que cuando uno quite una pieza que estaba bien puesta  se reste un 1, intente ponerlo asi:


        (sumar--)
 

pero no funciono.

y cuando se quite una bien puesta se reste un numero a la cuenta de la variable porque de lo contrario al ser  var sumar=0 y una ficha cualquiera sea ipieza if = (sumar=12) (cambio de escena) , se cambiaria de escena al colocar la misma pieza 12 veces ya que cumple los requisitos de la variable entonces es importante que se reste un 1 a la variable para volver a sumarlo cuando se vuelva a poner.

muchas gracias por responderme 100pre 🙂

Edited by Alex Balcazar
Link to post
Share on other sites
Hace 26 minutos, Alex Balcazar dijo:

amigo ya pude gracias, solo falta que cuando uno quite una pieza que estaba bien puesta  se reste un 1, intente ponerlo asi:
        (sumar--)

pero no funciono.

y cuando se quite una bien puesta se este un numero a la cuenta de la variable porque de lo contrario al ser  var sumar=0 y una ficha cualquiera sea ipieza if = (sumar=12) (cambio de escena) , se cambiaria de escena al colocar la misma pieza 12 veces ya que cumple los requisitos de la variable entonces es importante que se reste un 1 a la variable para volver a sumarlo cuando se vuelva a poner.

muchas gracias por responderme 100pre 🙂

 

Link to post
Share on other sites

No sé si será por eso pero con sumar— se resta después de ejecutar la instrucción, si está dentro de una más compleja. En ese caso debes usar —sumar ya que así se resta antes.

 

Acabo de darme cuenta que, según código que muestras, solo aceptas dos valores para x e y, el “bueno” y el inicial.

Debes comprobar si los valores x e y son los “buenos”, restar 1 si lo son, antes de modificar las variables con la posición inicial.

Edited by APB
Link to post
Share on other sites

se me ocurrio algo mucho mas simple, para no restar ni nada.

No conoces como poder bloquear un simbolo e impedir que se mueva o lo muevan por asi decirlo, para explicarme te lo planteo asi:

colocaria un codigo para bloquear el simbolo ya que cada pieza es un simbolo de pelicula, entonces lo colocaria justo en la linea de codigo donde esta la posicion final que es cuando ya se ensambla la pieza siendo asi:

ipieza1.x=23;
        ipieza1.y=13;
        (sumar++)
            if (sumar==12){
                gotoAndPlay(1, "nivel3"); (ya eso esta  resuelto)

                (insertar codigo para congelar o bloquear simbolo de pelicula e impedir su manipulacion)
            }
    }

y ya con eso seria todo y terminaria esa fase para aplicarlas a los otros juegos que tengo  a  mi cargo siendo este una prueba.

si sabes como hacerlo te agradezco y ya te dejo de molestar tanto, y gracias A ti habria acabado mi proyecto final. No te digo mentiras cuando te digo que me ayudaste mas en estos 2 ultimos  dias que mis propios profesores en todo el año.

MUCHAS GRACIAS Y DISCULPA!!!

Link to post
Share on other sites

Ya te dije que no conozco nada de AcctionScript, te he podido ayudar porque el lenguaje es muy parecido a otros.

Supongo que al crear ese objeto (ipieza1) has debido darle la propiedad que el usuario la pueda mover. Lo que se da se puede quitar.

Si el movimiento solo depende de los dos “EventListener” que has añadido a la ipieza1, para ejecutar las funciones de arrastrar y soltar, con eliminarlos debería dejar de moverse.

Edited by APB
Link to post
Share on other sites
Hace 9 horas, Alex Balcazar dijo:

me has ayudado mucho

Para eso estamos por aquí. 🙂

Ahora que estarás un poco más tranquilo, he leído que AcctionScript se usa para la animación en Flash. ¿Tiene sentido estudiarlo si Adobe ha dicho que dejará de dar soporte a Flash en breve? ¿O se usas en otros campos/programas que seguirán vivos?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.