|
Indice | Temas Recientes | Quién Está en LÃnea | Lista de Usuarios | Mi Perfil | Búsqueda | Ayuda |
![]() |
mvnForum » Listar todos los foros » Foro: Curso PLJ » Tema: Imagen sesion 14 |
Total de mensajes en este tema: 4 |
[Eliminar este Tema]
[Mover este Tema] [AÅadir a Mis Favoritos] [AÅadir un aviso a este tema] [Publicar nuevo tema] |
Autor |
|
![]() Extranjero
|
Tengo un problema: me funciona todo bien hasta que sustituyo las figuras geométricas por la imagen. La cuestión es que la imagen sale pero no se mueve. (No hace caso ni a las flechas ni a ESC). He seguido los pasos que se indican en los ejercicios y tengo este problema. ¿A qué puede ser debido? Creo que se me escapa algo... ![]() |
||
|
![]() Miembro
|
A primera vista no sabrÃa decirte... si puedes, copia y pega el código de la clase aquÃ, para poder echarle un vistazo |
||
|
![]() Extranjero
|
Ahà va el codigo: public class Ej2 extends JFrame implements Runnable { public static final int ANCHO = 320; public static final int ALTO = 240; MiCanvas mc = new MiCanvas(); Thread t = new Thread(this); int yObj = 0; int anchoPantalla; int altoPantalla; Image figura; public Ej2() { this.setUndecorated(true); setSize(ANCHO, ALTO); getContentPane().add(mc); Toolkit tk = Toolkit.getDefaultToolkit(); figura = tk.createImage("modulo3/sesion14/figura.png"); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); t.start(); // Tomamos el dispositivo grafico GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); // Mostramos dialogo para elegir un modo grafico DlgModos dlg = new DlgModos(gd, this); dlg.show(); anchoPantalla = dlg.modoSeleccionado.getWidth(); altoPantalla = dlg.modoSeleccionado.getHeight(); // Activamos el modo a pantalla completa, con el modo grafico seleccionado gd.setFullScreenWindow(this); gd.setDisplayMode(dlg.modoSeleccionado); addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.getKeyCode()==KeyEvent.VK_ESCAPE) { System.exit(0); } else if (e.getKeyCode()==KeyEvent.VK_UP) { if (yObj > 0) yObj--; } else if (e.getKeyCode()==KeyEvent.VK_DOWN) { if (yObj < ALTO) yObj++; } } }); } public void run() { while (true) { // Quitamos esta linea: yObj++; mc.repaint(); try { Thread.sleep(100); } catch (Exception ex) {} } } public static void main(String[] args) { Ej2 e2 = new Ej2(); e2.show(); } class MiCanvas extends Canvas { Image backbuffer = null; public MiCanvas() { } public void update(Graphics g) { paint(g); } public void paint(Graphics g) { if(backbuffer == null) backbuffer = createImage(ANCHO, ALTO); // Dibujamos los gráficos en el backbuffer Graphics off_g = backbuffer.getGraphics(); off_g.clearRect(0, 0, ANCHO, ALTO); off_g.drawImage(figura, 0, yObj, figura.getWidth(this), figura.getHeight(this), this); // Quitamos estas lineas, ya no las necesitamos: // off_g.setColor(Color.blue); // off_g.fillRect(5, yObj, 100, 25); // off_g.setColor(Color.green); // off_g.fillOval(125, yObj, 100, 50); // Volcamos el backbuffer a pantalla, segun el tamaño de la misma g.drawImage(backbuffer, 0, 0, anchoPantalla, altoPantalla, this); g.dispose(); } } } |
||
|
![]() Miembro
|
Pues no sé qué decirte... he cogido tu código tal cual, lo he metido en el paquete "modulo3.sesion14" junto con la clase "DlgModos" y un fichero png, y me ha funcionado Si dices que carga la imagen es porque la encuentra. Prueba a cambiar la imagen a cargar, y a poner la imagen más las figuras que dibujabas antes, y a ver qué se mueve y qué no. También prueba a refrescar (F5) el proyecto en eclipse, por si algún cambio no lo hubiese cogido bien, y a recompilar todo para asegurarte de que tienes la última versión compilada de todo. |
||
|
[Versión imprimible] [Publicar nuevo tema] |