Question

my problem is that whenever I try to change an image when a mouse is hovered over it, it doesn't change, and when I do playgame.destroy(); it just shows a white screen behind it, not the other image. Heres my code:

import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;

public class Menu extends BasicGameState {

Image playgame;
Image exitgame;
Image playgame_hover;
Image exitgame_hover;

public String mouse = "No Input Yet!";

public Menu(int state) {
}

@Override
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
    playgame = new Image("res/playgame.png");
    exitgame = new Image("res/exitgame.png");
    playgame_hover = new Image("res/playgame_hover.png");
    exitgame_hover = new Image("res/exitgame_hover.png");
}

@Override
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
    g.drawString(mouse, 590, 10);
    playgame.draw(100,100);
    exitgame.draw(100, 200);
}

@Override
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
    Input input = gc.getInput();
    int mousex = Mouse.getX();
    int mousey = Mouse.getY();
    mouse = "Mouse coordinate x: " + mousex + " y: " + mousey;
    // x-min:105  x-max:300  y-min:  y-max:300
    if(input.isMouseButtonDown(0)) {
        if((mousex>100 && mousex<600) && (mousey>357 && mousey<437)) {
        sbg.enterState(1);
    }
        if((mousex>100 && mousex<600) && (mousey>257 && mousey <337)) {
        System.exit(0);
    }
    }
    if((mousex>100 && mousex<600) && (mousey>357 && mousey<437)) {
        playgame.destroy();
        playgame_hover.draw(100, 100);
    }
    if((mousex>100 && mousex<600) && (mousey>257 && mousey <337)) {
        exitgame.destroy();
        exitgame_hover.draw(100, 200);
    }
    }

    @Override
    public int getID() {
    return 0;
    }
    }
Was it helpful?

Solution

You can only draw things in the render method. You have to save the state changed in the update method and then read those states in the render method.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top