elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  problema con graphics java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: problema con graphics java  (Leído 9,548 veces)
bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #10 en: 28 Diciembre 2015, 17:18 pm »

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 Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #11 en: 29 Diciembre 2015, 05:04 am »

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 Desconectado

Mensajes: 222



Ver Perfil
Re: problema con graphics java
« Respuesta #12 en: 29 Diciembre 2015, 06:18 am »

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 Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #13 en: 29 Diciembre 2015, 06:41 am »

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 Desconectado

Mensajes: 222



Ver Perfil
Re: problema con graphics java
« Respuesta #14 en: 29 Diciembre 2015, 07:51 am »

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 Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #15 en: 29 Diciembre 2015, 08:40 am »

¿Pero por qué no quieres utilizar hilos?, bueno de todos modos he modificado el código de @crack18 para que funcione sin hilos:
Código
  1. public class AyudaForo extends JPanel{
  2.  
  3.    private static int xinicial = 0, yinicial = 0;
  4.    private static int xfinal = 0, yfinal = 0;
  5.    private static boolean terminar = false;
  6.    private static final byte tamanoPelota=30;
  7.    public static AyudaForo animacion = new AyudaForo(0,0,200,200);
  8.  
  9.    public AyudaForo(int xinicial, int yinicial, int xfinal, int yfinal) {
  10.        this.xinicial = xinicial;
  11.        this.yinicial = yinicial;
  12.        this.xfinal = xfinal;
  13.        this.yfinal = yfinal;
  14.    }
  15.  
  16.    public void paint(Graphics g) {
  17.        super.paint(g);
  18.        pintarPunto(g, xinicial, yinicial);
  19.    }
  20.  
  21.    public void pintarPunto(Graphics g2, int x, int y) {
  22.        g2.setColor(Color.blue);
  23.        g2.fillOval(x, y, tamanoPelota, tamanoPelota);
  24.    }
  25.  
  26.    public static void run() {
  27.  
  28.        while (!terminar) {
  29.            xinicial++;
  30.            yinicial++;
  31.            if (xinicial == xfinal && yinicial == yfinal) {
  32.                break;
  33.            }
  34.            try {
  35.                Thread.sleep(10);
  36.            } catch (InterruptedException ex) {
  37.                ex.printStackTrace();
  38.            }
  39.            animacion.repaint();
  40.        }
  41.    }
  42.  
  43.    public static void main(String[] args) throws InterruptedException {
  44.  
  45.        JFrame ventana = new JFrame("animacion corriendo");
  46.        ventana.setBounds(0, 0, 500, 500);
  47.        ventana.add(animacion);
  48.        ventana.setVisible(true);
  49.        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  50.        run();
  51.        System.out.println("Hilo terminado");
  52.  
  53.    }
  54.  
  55. }
  56.  

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.

Código
  1. public static void run() {
  2.           //Aquí utiliza tu algoritmo para ir modificando las variables que te había mencionado
  3.  
  4.            try {
  5.                Thread.sleep(10);
  6.            } catch (InterruptedException ex) {
  7.                ex.printStackTrace();
  8.            }
  9.            animacion.repaint();
  10.  
  11.    }

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 Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #16 en: 11 Enero 2016, 04:19 am »

como puedo detener y luego seguir con la animacion?
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: problema con graphics java
« Respuesta #17 en: 11 Enero 2016, 05:00 am »

No logro comprender tu pregunta, ¿Quieres hacer algo como esto?

Código
  1. if(AnimacionActiva == true){
  2.    ActualizarDatosDeObjetos();
  3.    DibujarObjetos();
  4. }

En el método paint puedes poner un condicional así;

Código
  1. public void paint(Graphics g) {
  2.    super.paint(g);
  3.    if( AnimacionActiva == true )    
  4.        pintarPunto(g, xinicial, yinicial);
  5. }

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

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #18 en: 15 Enero 2016, 01:12 am »

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

Código
  1. import java.awt.Color;
  2. import java.awt.Graphics;
  3. import java.awt.event.KeyEvent;
  4. import java.awt.event.KeyListener;
  5. import javax.swing.JFrame;
  6. import javax.swing.JPanel;
  7.  
  8. public class AyudaForo extends JPanel{
  9.  
  10.    private static int xinicial = 0, yinicial = 0;
  11.    private static int xfinal = 0, yfinal = 0;
  12.    private static boolean estado = true;
  13.    private static final byte tamanoPelota=30;
  14.    public static AyudaForo animacion = new AyudaForo(0,0,200,200);
  15.  
  16.    private KeyListener listener;
  17.  
  18.    public AyudaForo(int xinicial, int yinicial, int xfinal, int yfinal) {
  19.        this.xinicial = xinicial;
  20.        this.yinicial = yinicial;
  21.        this.xfinal = xfinal;
  22.        this.yfinal = yfinal;
  23.         listener = new MyKeyListener();
  24.        addKeyListener(listener);
  25.        setFocusable(true);
  26.    }
  27.  
  28.    public void paint(Graphics g) {
  29.        super.paint(g);
  30.        pintarPunto(g, xinicial, yinicial);
  31.    }
  32.  
  33.    public void pintarPunto(Graphics g2, int x, int y) {
  34.        g2.setColor(Color.blue);
  35.        g2.fillOval(x, y, tamanoPelota, tamanoPelota);
  36.    }
  37.  
  38.    public static void run() {
  39.  
  40.        while (estado) {
  41.            xinicial++;
  42.            yinicial++;
  43.            if (xinicial == xfinal && yinicial == yfinal) {
  44.                break;
  45.            }
  46.            try {
  47.                Thread.sleep(10);
  48.            } catch (InterruptedException ex) {
  49.                ex.printStackTrace();
  50.            }
  51.            animacion.repaint();
  52.        }
  53.    }
  54.     public class MyKeyListener implements KeyListener {
  55.  
  56.        @Override
  57.        public void keyTyped(KeyEvent e) {
  58.        }
  59.  
  60.        @Override
  61.        public void keyPressed(KeyEvent e) {
  62.  
  63.            if ("Intro".equals(KeyEvent.getKeyText(e.getKeyCode()))) {
  64.                estado = true;
  65.                run();
  66.            }
  67.            if ("Q".equals(KeyEvent.getKeyText(e.getKeyCode()))) {
  68.                estado = false;
  69.            }
  70.        }
  71.  
  72.        @Override
  73.        public void keyReleased(KeyEvent e) {
  74.        }
  75.    }
  76.  
  77.    public static void main(String[] args) throws InterruptedException {
  78.  
  79.        JFrame ventana = new JFrame("animacion corriendo");
  80.        ventana.setBounds(0, 0, 500, 500);
  81.        ventana.add(animacion);
  82.        ventana.setVisible(true);
  83.        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  84.        System.out.println("Hilo terminado");
  85.  
  86.    }
  87.  
  88. }
  89.  

con la tecla Q para la animacion
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: problema con graphics java
« Respuesta #19 en: 15 Enero 2016, 01:43 am »

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;

Código
  1. @Override
  2.        public void keyPressed(KeyEvent e) {
  3.  
  4.            if ("Intro".equals(KeyEvent.getKeyText(e.getKeyCode()))) {
  5.                estado = true;
  6.                Runnable miRunnable = new Runnable()
  7.                {
  8.                    public void run()
  9.                    {
  10.                        try
  11.                        {
  12.                            animacion.run();
  13.                        }
  14.                        catch (Exception e)
  15.                        {
  16.                            e.printStackTrace();
  17.                        }
  18.                    }
  19.                 };
  20.  
  21.                 Thread hilo = new Thread (miRunnable);
  22.                 hilo.start();
  23.  
  24.            }
  25.            if ("Q".equals(KeyEvent.getKeyText(e.getKeyCode()))) {
  26.                estado = false;
  27.            }
  28.        }

Si quieres saber más sobre el EDT
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Dibujar un engranaje en java con Graphics
Java
meyinkin 1 5,667 Último mensaje 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,876 Último mensaje 18 Abril 2013, 21:06 pm
por rcoto
diferencias entre Procesadores intel con HD Graphics y sin HD Graphics
Hardware
Vjuan_ 6 4,383 Último mensaje 21 Diciembre 2012, 00:12 am
por Aprendiz-Oscuro
problema con el Graphics
Java
bash 3 1,987 Último mensaje 11 Febrero 2015, 14:28 pm
por Usuario Invitado
mover graphics en java sin hilos « 1 2 »
Java
bengy 11 5,978 Último mensaje 29 Diciembre 2015, 07:49 am
por crack81
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines