• Lunes 23 de Diciembre de 2024, 09:55

Autor Tema:  Como hacer un disparo en un JFrame  (Leído 4061 veces)

reymersa

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: ve
    • Ver Perfil
Como hacer un disparo en un JFrame
« en: Lunes 2 de Agosto de 2010, 06:44 »
0
como hago para que en determinado punto de la pantalla que de click salga un JLabel desde una posicion asta esa en forma de bala??

xuturk

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: Como hacer un disparo en un JFrame
« Respuesta #1 en: Lunes 2 de Agosto de 2010, 11:59 »
0
Hola amigo, voy a decirtelo como creo que podrias hacerlo (sin probarlo).

Creo que una forma facil seria si el movimiento es recto en vertical solo o en horizontal, simplemente le dices en el evento click que se mueva 1, 3, 5 o el numero de pixeles que te parezca mejor segun la velocidad que quieres en el eje X osea jlabel1.setposition(x+1,y) (no estoy seguro de que sea set position por que no he mirado las apis, si luego no es asi te lo confirmo y te pongo el metodo correcto, y si es no solo en horizontal o vertical, si no en diagonal, lo puedes hacer con la funcion matematica de la recta que pasa por dos puntos.

De todos modos supongo que no funcionara, por que obviamente lo que hara sera hacer que el jLabel aumente 1. Para que la bala avance hasta que salga de la pantalla sin que el programa se detenga, te aconsejo crear un thread (java.lang.thread) que si no sabes usar encantado te explicare el funcionamiento, en el cual programas eso mismo que te he dicho, y mientras el programa se ejecuta por un lado, la bala se va a mover, luego le tendrias que decir que cuando salga de la pantalla (windowWidth) (o como sea) que el icono de la bala se vuelva no visible setVisible(false) y que se pare el thread thread.stop()

espero que entiendas a que me refiero, si no te lo explico mas detallado.
Un saludo!

reymersa

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: ve
    • Ver Perfil
Re: Como hacer un disparo en un JFrame
« Respuesta #2 en: Martes 3 de Agosto de 2010, 02:07 »
0
Cita de: "xuturk"
Hola amigo, voy a decirtelo como creo que podrias hacerlo (sin probarlo).

Creo que una forma facil seria si el movimiento es recto en vertical solo o en horizontal, simplemente le dices en el evento click que se mueva 1, 3, 5 o el numero de pixeles que te parezca mejor segun la velocidad que quieres en el eje X osea jlabel1.setposition(x+1,y) (no estoy seguro de que sea set position por que no he mirado las apis, si luego no es asi te lo confirmo y te pongo el metodo correcto, y si es no solo en horizontal o vertical, si no en diagonal, lo puedes hacer con la funcion matematica de la recta que pasa por dos puntos.

De todos modos supongo que no funcionara, por que obviamente lo que hara sera hacer que el jLabel aumente 1. Para que la bala avance hasta que salga de la pantalla sin que el programa se detenga, te aconsejo crear un thread (java.lang.thread) que si no sabes usar encantado te explicare el funcionamiento, en el cual programas eso mismo que te he dicho, y mientras el programa se ejecuta por un lado, la bala se va a mover, luego le tendrias que decir que cuando salga de la pantalla (windowWidth) (o como sea) que el icono de la bala se vuelva no visible setVisible(false) y que se pare el thread thread.stop()

espero que entiendas a que me refiero, si no te lo explico mas detallado.
Un saludo!

primero que todo gracias amigo por tu respuesta pense q mi pregunta seria una mas de las muchas que ago SIN respuesta..

y lo q dices es verdad si el movimiento solo es horizontal o vertical solo se aumenta en Y o en X el metodo para localizar un label es Label.setLocation(x,y);  

tambien pense la via matematica o fisica del movimiento y pense en usar la formula de PUNTO PENDIENTE en google esta. esta me dice q amedida q modfique la X de dicha ecuacion la Y se moveria tambien.. pero el problema con esta ecuacion es q simplemente el label no agarra para donde le doy click ya estoy q me parto la cabeza pensando en otros metodos pero no se me ocurre mas :S el juego q intento hacer se llama MINE RICH

xuturk

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: Como hacer un disparo en un JFrame
« Respuesta #3 en: Martes 3 de Agosto de 2010, 11:47 »
0
a ver si lo he entendido, tu lo que quieres decir es que el jlabel no aparece justo donde haces click no?

Si te refieres a eso, para poner el jLabel en el punto justo donde hiciste click en el JFrame (o el tipo de contenedor que sea) creas un evento MouseClick que escuche sobre la superficie donde puedes hacer click, y si usas netbeans el codigo que se creara automaticamente sera este:

Código: Java
  1. private void formMouseClicked(java.awt.event.MouseEvent evt) {
  2. }
  3.  

ahi que es donde se van a realizar las funciones cuando se haga click simplemente pones:

evt.getX()
evt.getY()

Metiendolo en variables para saber donde ha hecho click etc o lo que quieras hacer con ello (si es el caso de no querer almacenarlo)

No se si me explico, es sencillo.

Si es que si que aparece el disparo pero el origen es 0,0 de la imagen que tambien suele pasar, eso lo puedes corregir o bien a ojo poniendo las coordenadas de los puntos anteriores con un poco de desvio para que salga justo en el punto medio de las dos, o bien haciendolo sabiendo la anchura y largura del icono dividiendola por dos y sumandosela al getX() y getY() que tenias ya.

Espero que te ayude, si no me he explicado en algo o no es a lo que te refieres no dudes en volver a preguntar.

Un saludo!

reymersa

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: ve
    • Ver Perfil
Re: Como hacer un disparo en un JFrame
« Respuesta #4 en: Domingo 8 de Agosto de 2010, 06:43 »
0
Gracias xuturk ya pude hacerlo men gracias por responder a mi pregunta...