Planetalia - Cursos

Cursos y Másters

Inicio    Profesores    Aulas    Testimonios    Cursos    Masters    Tecnologías    Cursos Gratuitos    Galería de Proyectos    Solicitar Información   

Curso - Programación de un Space Invaders en Java

  Página Anterior - Primeras imágenes Página Actual - 05 - Optimizando la carga de imágenes   Página Siguiente - Optimizando todavía más la carga de imágenes
  Índice de cursos Java gratuitos  

Optimizando la carga de imágenes

(c) Alexander Hristov

Si ya has programado en Java, te habrás dado cuenta que la forma de cargar la imagen es realmente patética - al hacerlo dentro del propio paint, lo que estamos haciendo es cargar la imagen cada vez que se redibuja la ventana, algo no muy hábil precisamente.

Se podría pensar que lo ideal es hacerlo es cargar la imagen en el constructor, pero pensemos por un momento qué ocurriría si por ejemplo nuestro juego es un applet y tenemos un centenar de imágenes de distintos bichos y niveles. Al descargar el usuario las clases Java del juego, se quedaría esperando una eternidad a que el programa descargase todas las imágenes, que realmente a lo mejor no se llegan a utilizar porque el usuario nunca llega a alcanzar el nivel en el que aparecen

Por este motivo se suele utilizar una técnica llamada carga tardía, que consiste en cargar la imagen una única vez, pero aplazar este instante hasta el momento en que realmente se hace necesario visualizar esa imagen


1     package version05;
2     /**
3      * Curso B?sico de desarrollo de Juegos en Java - Invaders
4      * 
5      * (c) 2004 Planetalia S.L. - Todos los derechos reservados. Prohibida su reproducci?n
6      * 
7      * http://www.planetalia.com
8      * 
9      */
10    
11    
12    import java.awt.Canvas;
13    import java.awt.Dimension;
14    import java.awt.Graphics;
15    import java.awt.event.WindowAdapter;
16    import java.awt.event.WindowEvent;
17    import java.awt.image.BufferedImage;
18    import java.net.URL;
19    
20    import javax.imageio.ImageIO;
21    import javax.swing.JFrame;
22    import javax.swing.JPanel;
23    
24    public class Invaders extends Canvas {
25      public static final int WIDTH = 800;
26      public static final int HEIGHT = 600;
27      
28 public BufferedImage bicho = null;
29 30 31 public Invaders() { 32 JFrame ventana = new JFrame("Invaders"); 33 JPanel panel = (JPanel)ventana.getContentPane(); 34 setBounds(0,0,WIDTH,HEIGHT); 35 panel.setPreferredSize(new Dimension(WIDTH,HEIGHT)); 36 panel.setLayout(null); 37 panel.add(this); 38 ventana.setBounds(0,0,WIDTH,HEIGHT); 39 ventana.setVisible(true); 40 ventana.addWindowListener( new WindowAdapter() { 41 public void windowClosing(WindowEvent e) { 42 System.exit(0); 43 } 44 }); 45 } 46 47 public BufferedImage loadImage(String nombre) { 48 URL url=null; 49 try { 50 url = getClass().getClassLoader().getResource(nombre); 51 return ImageIO.read(url); 52 } catch (Exception e) { 53 System.out.println("No se pudo cargar la imagen " + nombre +" de "+url); 54 System.out.println("El error fue : "+e.getClass().getName()+" "+e.getMessage()); 55 System.exit(0); 56 return null; 57 } 58 } 59 60 61 public void paint(Graphics g) {
62 if (bicho==null) 63 bicho = loadImage("res/bicho.gif");
64 g.drawImage(bicho, 40, 40,this); 65 } 66 67 public static void main(String[] args) { 68 Invaders inv = new Invaders(); 69 } 70 } 71


¿Quieres ser notificado cuando salan nuevos tutoriales y cursos?. Pulsa aquí


Lista de archivos Java del programa en este paso

Invaders.java      

Lista de recursos

bicho.gif bicho0.gif bicho1.gif bicho2.gif
bombD.gif bombDL.gif bombDR.gif bombL.gif
bombR.gif bombU.gif bombUL.gif bombUR.gif
disparo.gif disparo0.gif disparo1.gif disparo2.gif
explosion.wav misil.gif missile.wav musica.wav
nave.gif oceano.gif photon.wav test.gif
Thumbs.db      

  Página Anterior - Primeras imágenes Página Actual - 05 - Optimizando la carga de imágenes   Página Siguiente - Optimizando todavía más la carga de imágenes
  Índice de cursos Java gratuitos  

(c) 2004 Planetalia S.L. Todos los derechos reservados. Prohibida su reproducción