如果它碰到另一个盒子,则停止移动

时间:2013-04-23 18:16:35

标签: java user-interface

我正在尝试编写一个允许用户移动框的GUI。屏幕上还有另一个框,称为“块”,不允许框相交。我有盒子移动很好,但我不知道如何阻止两个交叉,并保持在屏幕上框的绘图。现在,当它碰到块时盒子消失了(我知道它为什么这样做,我只是不知道如何解决它)。

X和Y是鼠标左键和右键检测到的移动。

box = new Rectangle2D.Double(0 + X, 0 + Y, 200, 50);
block = new Rectangle2D.Double(300, 300, 50, 50);

if (box.intersects(block)) {
        hit = true;

    } else {
        hit = false;
    }    

Graphics2D g2 = (Graphics2D) g;
    g2.setPaint(Color.red);
    g2.draw(block);
    if (model.hit()) {
        g2.setPaint(Color.black);
        g2.drawString("WHOA THERE", 20, 50);
    } else {
    g2.setPaint(Color.blue);
    g2.fill(box);

1 个答案:

答案 0 :(得分:0)

我有点不清楚你在问什么。如果您在询问如何在块到达块时绘制框,则问题是您的if / else语句。在if的情况下,它会跳过绘图块。删除其他以绘制框,即使它命中。

如果你问如何防止两个盒子交叉,这很容易。如果检测到它们相交,请移动移动框,使其刚好在块外。因此,如果块位于x = 10,请设置移动框(model?),使其位于x = 11处.HTH