Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带键盘的Java Slick 2D绘图_Java_Slick2d - Fatal编程技术网

带键盘的Java Slick 2D绘图

带键盘的Java Slick 2D绘图,java,slick2d,Java,Slick2d,我已经在下面粘贴了主状态。每次我移动键盘时,对象都会移动,但它会刷新页面。如何使对象不刷新,看起来像图像轨迹,并最终绘制 package javagame; import org.lwjgl.input.*; import org.newdawn.slick.*; import org.newdawn.slick.state.*; public class Menu extends BasicGameState{ public static String mouse = "MOUSE

我已经在下面粘贴了主状态。每次我移动键盘时,对象都会移动,但它会刷新页面。如何使对象不刷新,看起来像图像轨迹,并最终绘制

package javagame;

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

public class Menu extends BasicGameState{
    public static String mouse = "MOUSE IS NOT ON THE SCREEN";
    public static String keyBoard = "O";
    public static int keyBoardX = 50;
    public static int keyBoardY = 50;
    public static int xPos;
    public static int yPos;

public Menu (int state) {

}

// This method is just to initiate objects
public void init(GameContainer gameContainer, StateBasedGame stateBasedGame)       
throws SlickException {
}

public void render(GameContainer gameContainer, StateBasedGame     
stateBasedGame, Graphics g) throws SlickException {
    g.drawString(mouse, xPos, 500 - yPos);
    g.drawString(keyBoard, keyBoardX, keyBoardY);
}

public void update(GameContainer gameContainer, StateBasedGame 
stateBasedGame, int delta) throws SlickException {
    // keyboard
    Input input = gameContainer.getInput();

    if (input.isKeyDown(input.KEY_UP)) {
        keyBoardY -= 1;
    } else if (input.isKeyDown(input.KEY_DOWN)) {
        keyBoardY += 1;
    } else if (input.isKeyDown(input.KEY_LEFT)) {
        keyBoardX -= 1;
    } else if (input.isKeyDown(input.KEY_RIGHT)) {
        keyBoardX += 1;
    }
}

public int getID() {
    return 0;
}
}
要使其看起来“像图像轨迹并最终绘制”,实际上必须在前一个位置重新绘制图像,直到您希望它消失为止-否则渲染方法将只重新绘制当前状态,并且不会有“尾随”阴影

一种选择是保留有限的x-y坐标历史记录,并在每次render()调用时重新绘制历史记录中的所有内容。要创建淡入/拖尾效果,请减小alpha。可以通过在渲染之前在
图形
对象上设置字体,使用具有较低alpha值的
颜色
字体来完成此操作