Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 停止图像移动_Java_Image_Slick2d_Particles - Fatal编程技术网

Java 停止图像移动

Java 停止图像移动,java,image,slick2d,particles,Java,Image,Slick2d,Particles,好的,所以每当我点击鼠标时,我的图像都会沿着y轴向下移动,我唯一的问题是我不知道如何让它在点击屏幕底部时停止,有人能帮忙吗 import java.awt.Point; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.BasicGameState

好的,所以每当我点击鼠标时,我的图像都会沿着y轴向下移动,我唯一的问题是我不知道如何让它在点击屏幕底部时停止,有人能帮忙吗

    import java.awt.Point;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;

public class Control extends BasicGameState {
    public static final int ID = 1;

    public Methods m = new Methods();
    public Point[] point = new Point[(800 * 600)];

    int pressedX;
    int pressedY;
    int num = 0;
    String Build = "1.1";

    public void init(GameContainer container, StateBasedGame game) throws SlickException{
    }

    public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException {
        for (Point p : point) {
            if (p != null) {
                m.drawParticle(p.x, p.y += 1);
            }
        }
        g.drawString("Particle Test", 680, 0);
        g.drawString("Build: " + Build, 680, 15);
        g.drawString("Pixels: " + num, 10, 25);
    }

    public void update(GameContainer container, StateBasedGame game, int delta) {
    }

    public void mousePressed(int button, int x, int y) {
        pressedX = x;
        pressedY = y;
        num = num + 1;
        point[num] = new Point(pressedX, pressedY);
        }

    public int getID() {
        return ID;
    }

}

我可以想象,在渲染粒子之前,你会想在某个地方检查粒子的x/y位置,并在粒子超出边界时将其从阵列中删除

public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException {
    for (int index = 0; index < point.length; index++) {
        Point p = point[index];
        if (p != null) {
            p.y++;
            if (p.y > height) { // You'll need to define height...
                point[index] = null; // Or do something else with it??
            } else {
                m.drawParticle(p.x, p.y);
            }
        }
    }
    g.drawString("Particle Test", 680, 0);
    g.drawString("Build: " + Build, 680, 15);
    g.drawString("Pixels: " + num, 10, 25);
}

谢谢,现在你知道我如何让它停止向下移动了吗?在第二个例子中,如果
p.y
等于或大于可用高度,它的y位置就不应该再更新了……显然,如果你从数组中删除它(将数组位置设为null),它不仅不会再移动,而且不会被绘制;)但我能让它静止不动吗?是的。一旦p.y>=可用高度,第二个示例将停止更新y位置。。。
        if (p != null) {
            if (p.y >= height) { // You'll need to define height...
                // Do something here
            } else {
                p.y++;
                m.drawParticle(p.x, p.y);
            }
        }