0
我想製作代碼,以便當我點擊容器中的某個位置時,我創建一個新的圖像,其座標爲mouseX和Y,我點擊了它們。如何使用mouseListener在Slick2d中添加一個新的圖像
我試圖做到這一點,但我不知道如何繪製新圖像,沒有舊圖像獲得與新圖像相同的座標,並且我不確定是否創建了不同的座標圖像,或者如果它只是相同的圖像,我會改變每次點擊時的座標。
我正在考慮創建一個圖像數組列表,然後每當我點擊某處時,它會向列表中添加一個新圖像,然後渲染只是呈現整個列表,但在這裏我不知道如何告訴渲染點擊每個圖像的位置(座標)。
這是我到目前爲止,我真的很感激,如果有人可以幫助我。讓我知道,如果有需要我澄清:)
package example;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.lwjgl.input.Mouse;
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.SlickException;
public class SimpleSlickGame extends BasicGame
{
public String mouseCoords;
public String testClick ="Nothing clicked";
public int mouseX;
public int mouseY;
public SimpleSlickGame(String gamename)
{
super(gamename);
}
@Override
public void init(GameContainer gc) throws SlickException {
mouseCoords = "";
}
@Override
public void update(GameContainer gc, int i) throws SlickException {
int mouseX = Mouse.getX();
int mouseY = Mouse.getY();
mouseCoords = "Mouse X: "+ mouseX + " Mouse Y: "+ mouseY;
}
@Override
public void render(GameContainer gc, Graphics g) throws SlickException
{
g.drawString(mouseCoords, 250, 200);
g.drawRect(100, 100, 100, 100);
g.drawString(testClick, 200, 400);
g.drawImage(new Image("images/house.png"), mouseX, mouseY);
}
public void mousePressed(int button, int x, int y){
mouseX = x;
mouseY = y;
if (button == 0){
if((x> 100 && x<200) && (y > 100 && y < 200)){
testClick = "inside box";
}
else{
testClick = "outside box";
}
}
}
public static void main(String[] args)
{
try
{
AppGameContainer appgc;
appgc = new AppGameContainer(new SimpleSlickGame("Simple Slick Game"));
appgc.setDisplayMode(600, 600, false);
appgc.start();
}
catch (SlickException ex)
{
Logger.getLogger(SimpleSlickGame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
您的解決方案似乎相當不錯。只需要注意幾件事情:1)在每個循環中創建一個「新圖像」的問題,你應該在類中聲明你的圖像,然後在渲染中繪製它(通常:在渲染或更新中從不使用'new' )。 2)ATM只是繪製白色形狀,但是當你繪製圖像時也會關心圖像的創建,只需聲明一次,然後再使用它幾次。 – RPresle