Hey,
I’m working on a project using gage2d. When I add more than 2 layers using a parallax, no error is thrown but the display stops updating.
simplified example:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
import com.dnsalias.java.gage.map.Map;
import com.dnsalias.java.gage.map.Parallax;
import com.dnsalias.java.gage.map.TileManager;
public class test {
Image tiles[] = new Image[1];
Map map1;
Map map2;
Map map3;
Parallax parallax;
JFrame frm;
public test(){
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
frm = new JFrame(gc);
JPanel content = new JPanel();
content.setLayout(null);
mPanel mPanel = new mPanel();
mPanel.setBounds(0,0,500,400);
content.add(mPanel);
frm.setContentPane(content);
frm.setSize(640,480);
frm.setTitle("Layer Test");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
public static void main(String[] args) {
new test();
}
private class mPanel extends JPanel {
public mPanel(){
TileManager manager = new TileManager(64,64);
map1 = new Map(manager, 20, 20, 500, 400);
map2 = new Map(manager, 20, 20, 500, 400);
map3 = new Map(manager, 20, 20, 500, 400);
try{
tiles[0] = Toolkit.getDefaultToolkit().getImage(test.class.getResource("images/tile1.png"));
MediaTracker m = new MediaTracker(frm);
m.addImage(tiles[0], 0);
m.waitForAll();
}catch(Exception e){
e.printStackTrace();
}
int[] ids = new int[tiles.length];
for(int i=0; i<tiles.length; i++) ids[i] = manager.addTile(tiles[i]);
int mapdata[] = new int[400];
int mapdata2[] = new int[400];
for (int i = 0; i < mapdata.length; i++){
mapdata[i] = 0;
mapdata2[i] = 1;
}
map1.copyMap(mapdata);
map2.copyMap(mapdata);
map3.copyMap(mapdata2);
}
public void paint(Graphics g){
g.setColor(Color.white);
parallax = new Parallax();
parallax.addMap(map1);
//parallax.addMap(map2);
parallax.addMap(map3);
parallax.render(g);
g.dispose();
}
}
}
The above code adds a blank layer on the bottom, and a layer filled with “tile1.png” on top.
It works perfectly with 2 layers, but if you remove the comment on the line that says parallax.addMap(map2), nothing is displayed.