Autor
|
Tema: problema con graphics java (Leído 9,619 veces)
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
hola de nuevo y gracias por su ayuda !!!
vuelvo con otra duda, como puedo animar a varios objetos con movimiento simultaneamente???
|
|
|
En línea
|
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
como puedo animar dos graficos al mismo tiempo?
intente pero lo que pasa es que se anima uno primero y luego el otro
ayudaaaaaaaaa porfavor
|
|
|
En línea
|
|
|
|
crack81
Desconectado
Mensajes: 222
|
En el evento paint puedes poner ahi tus dos objetos a animar y lo metres dentro de un bucle y llamas al repaint y para estor moviendo los objetos animados obviamente tu defines como se movera cada objeto ejemplo le puedes asignar unas coordenadas a cada a animacion y segun se llame a repaint podras ver las dos animaciones como si lo hicieran en paralelo
|
|
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
gracias gracias por responder
lo que pasa es que la animacion tiene sleep(seg) entonces lo que sucede es que primero hace la primera animacion y luego se activa la segunda
como podria solucionarlo?
|
|
|
En línea
|
|
|
|
crack81
Desconectado
Mensajes: 222
|
pues lo primero que se me viene a la mente es usar hilos pero mejor muestra tu codigo a lo mejor se puede implementar de otra forma.
|
|
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
¿Pero por qué no quieres utilizar hilos?, bueno de todos modos he modificado el código de @crack18 para que funcione sin hilos: public class AyudaForo extends JPanel{ private static int xinicial = 0, yinicial = 0; private static int xfinal = 0, yfinal = 0; private static boolean terminar = false; private static final byte tamanoPelota=30; public static AyudaForo animacion = new AyudaForo(0,0,200,200); public AyudaForo(int xinicial, int yinicial, int xfinal, int yfinal) { this.xinicial = xinicial; this.yinicial = yinicial; this.xfinal = xfinal; this.yfinal = yfinal; } super.paint(g); pintarPunto(g, xinicial, yinicial); } public void pintarPunto (Graphics g2, int x, int y ) { g2.fillOval(x, y, tamanoPelota, tamanoPelota); } public static void run() { while (!terminar) { xinicial++; yinicial++; if (xinicial == xfinal && yinicial == yfinal) { break; } try { ex.printStackTrace(); } animacion.repaint(); } } ventana.setBounds(0, 0, 500, 500); ventana.add(animacion); ventana.setVisible(true); ventana. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); run(); System. out. println("Hilo terminado"); } }
en el método run hay dos variables xinicial,yinicial y son las coordenadas del punto, o sea que dentro de ese método debes implementar tu algoritmo para dibujar. public static void run() { //Aquí utiliza tu algoritmo para ir modificando las variables que te había mencionado try { ex.printStackTrace(); } animacion.repaint(); }
debes llamar a repaint cada vez que hayas desplazado el punto, en el ejemplo sólo se llama una vez.
|
|
« Última modificación: 30 Diciembre 2015, 15:11 pm por DeviiAC »
|
En línea
|
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
como puedo detener y luego seguir con la animacion?
|
|
|
En línea
|
|
|
|
0xFer
Desconectado
Mensajes: 400
|
No logro comprender tu pregunta, ¿Quieres hacer algo como esto? if(AnimacionActiva == true){ ActualizarDatosDeObjetos(); DibujarObjetos(); }
En el método paint puedes poner un condicional así; super.paint(g); if( AnimacionActiva == true ) pintarPunto(g, xinicial, yinicial); }
El mismo condicional debe ir en la parte donde actualizar las coordenadas o los datos de los objetos que dibujas. luego con AnimacionActiva = false; haces que todo se detenga, pero eso como que tiene más sentido si utilizas hilos, aprende a utilizarlos, para hacer juegos y animaciones son muy importantes.
|
|
« Última modificación: 11 Enero 2016, 05:03 am por 0xFer »
|
En línea
|
int getRandomNumber(){ return 4; //chosen by fair dice roll //guaranteed to be random }
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
al momento de activar la animacion con el boton Enter solo muestra el inicio y el final de la animacion que prodra ser el error? este es mi codigo import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; public class AyudaForo extends JPanel{ private static int xinicial = 0, yinicial = 0; private static int xfinal = 0, yfinal = 0; private static boolean estado = true; private static final byte tamanoPelota=30; public static AyudaForo animacion = new AyudaForo(0,0,200,200); public AyudaForo(int xinicial, int yinicial, int xfinal, int yfinal) { this.xinicial = xinicial; this.yinicial = yinicial; this.xfinal = xfinal; this.yfinal = yfinal; listener = new MyKeyListener(); addKeyListener(listener); setFocusable(true); } super.paint(g); pintarPunto(g, xinicial, yinicial); } public void pintarPunto (Graphics g2, int x, int y ) { g2.fillOval(x, y, tamanoPelota, tamanoPelota); } public static void run() { while (estado) { xinicial++; yinicial++; if (xinicial == xfinal && yinicial == yfinal) { break; } try { ex.printStackTrace(); } animacion.repaint(); } } @Override } @Override if ("Intro". equals(KeyEvent. getKeyText(e. getKeyCode()))) { estado = true; run(); } if ("Q". equals(KeyEvent. getKeyText(e. getKeyCode()))) { estado = false; } } @Override } } ventana.setBounds(0, 0, 500, 500); ventana.add(animacion); ventana.setVisible(true); ventana. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); System. out. println("Hilo terminado"); } }
con la tecla Q para la animacion
|
|
|
En línea
|
|
|
|
0xFer
Desconectado
Mensajes: 400
|
El problema es que el EDT(Event Dispatch Thread) se queda atendiendo el evento del teclado( cuando se presiona "Intro") y como también es el que se encarga de pintar la ventana entonces hay que esperar a que termine el código del keyPressed y después pintar. La solución es que el código dentro del keyPressed debe lanzar un hilo para que el EDT se desocupe; @Override if ("Intro". equals(KeyEvent. getKeyText(e. getKeyCode()))) { estado = true; { public void run() { try { animacion.run(); } { e.printStackTrace(); } } }; hilo.start(); } if ("Q". equals(KeyEvent. getKeyText(e. getKeyCode()))) { estado = false; } }
Si quieres saber más sobre el EDT
|
|
|
En línea
|
int getRandomNumber(){ return 4; //chosen by fair dice roll //guaranteed to be random }
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Dibujar un engranaje en java con Graphics
Java
|
meyinkin
|
1
|
5,679
|
2 Diciembre 2009, 16:02 pm
por Leyer
|
|
|
Problema Wifiway 2.0 con grafica ATI radeon premium graphics directx 11
Wireless en Linux
|
Norlak
|
4
|
5,901
|
18 Abril 2013, 21:06 pm
por rcoto
|
|
|
diferencias entre Procesadores intel con HD Graphics y sin HD Graphics
Hardware
|
Vjuan_
|
6
|
4,489
|
21 Diciembre 2012, 00:12 am
por Aprendiz-Oscuro
|
|
|
problema con el Graphics
Java
|
bash
|
3
|
2,002
|
11 Febrero 2015, 14:28 pm
por Usuario Invitado
|
|
|
mover graphics en java sin hilos
« 1 2 »
Java
|
bengy
|
11
|
6,022
|
29 Diciembre 2015, 07:49 am
por crack81
|
|