从墙上弹出一个物体

时间:2014-03-11 02:50:33

标签: java graphics jframe cube bounce

所以我有这个立方体我希望从墙上反弹,(现在只是x轴)然而它会移动 当它到达框架的末端时,它来回移动而不是向相反的方向移动。

    public void moveBox(int dx,int dy)
{
    if(xLeft < 0 || xLeft > frame_width)
    {
        dx = -dx;
    }
    xLeft = xLeft + dx;
    repaint();
}

如果xLeft(也就是多维数据集的原始坐标通过框架),那么我从代码中理解的是,然后dx(它被移动的速度)变为负值,这应该翻转方向。当它回到零时,双重否定会将其重新转为正数。我的逻辑是有缺陷的,因为它没有在框架结束时反复浮动它

然而事实并非如此,我不明白为什么会这样,因为每次使用不同的xLeft值调用该方法?如果是这样的话我该怎么办才能让它反弹?我已经尝试了很多不同的东西似乎没有完全反弹

1 个答案:

答案 0 :(得分:1)

评估后,

xLeft可能仍然不在界限范围内,这意味着它会不断进入if声明。

如果delta小于对象通过边界的量,则会发生这种情况。

您可以考虑将对象放回边界的边缘,例如

if(xLeft < 0 || xLeft > frame_width)
{
    dx = -dx;
}

if (xLeft < 0)  
{
    xLeft = 0;
} 
else if (xLeft > frame_width)  
{
    xLeft = frame_width;
} 
else 
{
    xLeft = xLeft + dx;
}

如果您愿意,可以删除else部分,只需将xLeft移动到delta ...