1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
public class Window extends JFrame {
private static final long serialVersionUID = 1L;
public Window(){
this.setTitle("Angrimac");
this.setSize(800, 600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setContentPane(new Canvas());
this.setVisible(true);
}
private class Canvas extends JPanel implements ActionListener{
private static final long serialVersionUID = 1L;
protected SwingStage stage;
private Timer refreshTimer;
private LaunchListener launchListener;
public Canvas(){
this.setBackground(Color.white);
//contains and set the stage elements
this.stage = new SwingStage();
//set refresh Timer
this.refreshTimer = new Timer((int) (1000.0 / 60.0), this);
this.refreshTimer.start();
}
public void resetTrans(Graphics2D g2) {
AffineTransform at = new AffineTransform();
at.setToIdentity();
g2.setTransform(at);
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
//draw bodies
for (DrawableElement elt : stage.drawingList) {
resetTrans(g2);
g2.setColor(Color.red);
g2.translate(elt.getBody().getWorldCenter().x, elt.getBody().getWorldCenter().y);
g2.rotate(elt.getBody().getAngle());
g2.drawRect(-(elt.getWidth()/2), -(elt.getHeight()/2), elt.getWidth(), elt.getHeight());
}
}
@Override
public void actionPerformed(ActionEvent e) {
this.stage.world.step(1.0f / 60.0f, 10);
this.repaint();
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new Window().setVisible(true);
}
});
}
} |
Partager