Slick2D - 检测鼠标悬停在图像上
Slick2D - Detect mouse hover on an Image
我正在尝试检测鼠标何时悬停在图像上(播放图像)以及何时单击鼠标会发生一些事情。
我在屏幕中央绘制了一个图像,但我不知道如何在我自己的代码中实现它:
@Override
public void init(GameContainer arg0, StateBasedGame arg1) throws SlickException {
f = (float) (0.1 * Main_Activity.apg.getHeight() / 180);
play = new Image("res/play_image.png");
play_Original_Width = play.getWidth();
play_Original_Height = play.getHeight();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
width = screenSize.getWidth();
height = screenSize.getHeight();
}
@Override
public void render(GameContainer arg0, StateBasedGame arg1, Graphics g) throws SlickException {
play.draw(Main_Activity.apg.getWidth() / 2 - ((play_Original_Width * f) / 2),
Main_Activity.apg.getHeight() / 2 - ((play_Original_Height * f) / 2), f);
}
@Override
public void update(GameContainer gc, StateBasedGame sbg, int arg2) throws SlickException {
int x = Mouse.getX();
int y = Mouse.getY();
}
apg:
apg = new AppGameContainer(new Main_Activity(game_Name));
apg.setDisplayMode((int) width, (int) height, false);
apg.setShowFPS(false);
apg.start();
我如何设法检测鼠标何时悬停在图像上(播放图像)?
提前致谢。
您只需要测试您的 x 值是否介于您的图像 X 和图像 X + 图像宽度之间,以及您的 y 值是否相同。
在您的更新方法中:
int x = Mouse.getX();
int y = Mouse.getY();
int playX = Main_Activity.apg.getWidth() / 2 - ((play_Original_Width * f) / 2);
int playY = Main_Activity.apg.getHeight() / 2 - ((play_Original_Height * f) / 2);
if (x > playX && x < playX+play_Original_Width && y > playY && y < playY + play_Original_Height) {
// then your mouse coordinates are over your image.
}
其他(如果对您有用,请使用):
在个人的一些代码中,我曾经实现了一个ImageRectangle,继承自Rectangle,包含一个Image。有了这种行为,我可以使用 intersects
方法来检测它。我更喜欢使用 mouseListener 来管理这些鼠标事件。
public ImageRectangle extends Rectangle {
Image play;
public ImageRectangle(Image,x,y,f){...}
public void init(...){...}
public void render(...){this.image.draw();}
public void update(...){...}
}
在您的 mouseMoved 方法中:
Rectangle mousePosition = new Rectangle(x,y,1,1);
if(mousePosition.intersects(playImageRectangle)) {//do whatever you need}
我正在尝试检测鼠标何时悬停在图像上(播放图像)以及何时单击鼠标会发生一些事情。
我在屏幕中央绘制了一个图像,但我不知道如何在我自己的代码中实现它:
@Override
public void init(GameContainer arg0, StateBasedGame arg1) throws SlickException {
f = (float) (0.1 * Main_Activity.apg.getHeight() / 180);
play = new Image("res/play_image.png");
play_Original_Width = play.getWidth();
play_Original_Height = play.getHeight();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
width = screenSize.getWidth();
height = screenSize.getHeight();
}
@Override
public void render(GameContainer arg0, StateBasedGame arg1, Graphics g) throws SlickException {
play.draw(Main_Activity.apg.getWidth() / 2 - ((play_Original_Width * f) / 2),
Main_Activity.apg.getHeight() / 2 - ((play_Original_Height * f) / 2), f);
}
@Override
public void update(GameContainer gc, StateBasedGame sbg, int arg2) throws SlickException {
int x = Mouse.getX();
int y = Mouse.getY();
}
apg:
apg = new AppGameContainer(new Main_Activity(game_Name));
apg.setDisplayMode((int) width, (int) height, false);
apg.setShowFPS(false);
apg.start();
我如何设法检测鼠标何时悬停在图像上(播放图像)?
提前致谢。
您只需要测试您的 x 值是否介于您的图像 X 和图像 X + 图像宽度之间,以及您的 y 值是否相同。
在您的更新方法中:
int x = Mouse.getX();
int y = Mouse.getY();
int playX = Main_Activity.apg.getWidth() / 2 - ((play_Original_Width * f) / 2);
int playY = Main_Activity.apg.getHeight() / 2 - ((play_Original_Height * f) / 2);
if (x > playX && x < playX+play_Original_Width && y > playY && y < playY + play_Original_Height) {
// then your mouse coordinates are over your image.
}
其他(如果对您有用,请使用):
在个人的一些代码中,我曾经实现了一个ImageRectangle,继承自Rectangle,包含一个Image。有了这种行为,我可以使用 intersects
方法来检测它。我更喜欢使用 mouseListener 来管理这些鼠标事件。
public ImageRectangle extends Rectangle {
Image play;
public ImageRectangle(Image,x,y,f){...}
public void init(...){...}
public void render(...){this.image.draw();}
public void update(...){...}
}
在您的 mouseMoved 方法中:
Rectangle mousePosition = new Rectangle(x,y,1,1);
if(mousePosition.intersects(playImageRectangle)) {//do whatever you need}