Actualmente estoy programando un juego wich incluye gran cantidad de elementos gráficos. Actualmente las miradas código como este:
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(ImageLoader.gui_iconbar, xToRel(480), yToRel(810), xToRel(960), yToRel(270), null);
g.drawImage(ClientVariables.getSplashart(Main.selectedCharacter, 0), xToRel(495), yToRel(825), xToRel(135), yToRel(240), null);
//... (don't get confused with xToRel, it just makes changes to the drawing position if you move the camera)
}
El problema es: hay un montón de thise g.draw (lo que sea); líneas. Quiero dividir en varias clases, pero sólo hacer 4 clases y copiar pegar gameFrame.add (GraphicclassXY); no funciona, como es lógico. ¿Alguien sabe cómo solucionar este problema? (No es un problema si la solución incluye hacer cambios de JLabel a la lona por ejemplo)
Crear clases no componentes lógicos (que no se extienden JLabel, JPanel, JFrame, JComponent u otro componente Swing), darles un public void draw(Graphics g)
método, dar la clase que hace las instancias de sus clases de dibujo lógico, tal vez dentro de algún tipo de colección, y recorrer la colección y la llamada draw
en sus instancias dentro del método paintComponent.