【问题标题】:Particle system Array粒子系统阵列
【发布时间】:2012-10-08 03:57:45
【问题描述】:

所以我整天都在努力让我的盒子在一个数组中保存它们的位置,最后我想我想出了一些东西(在你们的大力帮助下)但它只是不起作用......谁能告诉我为什么?

控制类:

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;

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

    public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException {
        m.drawParticle(pressedX, pressedY);
    }

    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].x = pressedX;
        point[num].y = pressedY;
        }

    public int getID() {
        return ID;
    }


}

方法类:

    import org.newdawn.slick.Graphics;

public class Methods {

    public Graphics g = new Graphics();

    public int sizeX = 1;
    public int sizeY = 1;

    public void drawParticle(float x, float y){
        g.drawRect(x, y, sizeX, sizeY);
    }

}

【问题讨论】:

  • 请比“不工作”更具体。
  • @user1610541 当然:) 我们想知道代码是做什么的?您是否遇到任何错误?提供一些相关信息,以便轻松完成
  • 应该 mousePressed(int button, int x, int y) 方法覆盖 mousePressed(MouseEvent e) MouseListener 方法吗?如果是,则必须实现 MouseListener 接口并使用 mousePressed(MouseEvent e) 而不是 mousePressed(int button, int x, int y)

标签: java arrays particles


【解决方案1】:

虽然您已经初始化了点数组的大小,但您还没有初始化内容。

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

另外想想在你的render方法中,你需要重新渲染图形(我可能弄错了,我之前没用过Slick2D)...

像...

public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException {
    for (Point p : point) {
        if (p != null) {
            m.drawParticle(p.x, p.y);
        }
    }
    m.drawParticle(pressedX, pressedY);
}

我也很好奇你创建自己的 Graphics,尤其是当 render 方法传递给你时,你可能需要进一步检查并确保这是可以接受的......

【讨论】:

  • 非常感谢!你帮助我终于完成了这件事:)
猜你喜欢
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
相关资源
最近更新 更多