逐个移动矩形(使用class和foreach循环)

时间:2014-07-11 17:31:51

标签: c# xna

我有写代码来移动多个矩形 这里。 moving rectangles one by one

然而,为了使我的代码整洁,我使用class和foreach循环以下面的方式重写了它。但这一次,我无法一个接一个地移动它们。有什么想法解决它吗? 提前谢谢了。

在我的object.cs类中:

    public bool GetSelected(int x, int y)
    //  public Rectangle GetSelected(List<Rectangle> squares)
    {
        bool GetSelected = false;
        MouseState mouse = Mouse.GetState();

        // Rectangle mousePosition = new Rectangle(mouse.X, mouse.Y, 200, 80);

        if (drawRectangle.Contains(mouse.X, mouse.Y) && (mouse.LeftButton == ButtonState.Pressed))
            {
                GetSelected = true;                
            }            
        return GetSelected;
    }

在main.cs的代码中,我使用以下内容移动矩形。但是,如果我有多个矩形,如果某些矩形重叠,我怎样才能每次选择一个矩形? 感谢。

        foreach (Chemtile chemtile in tiles)
        {

            if (chemtile.GetSelected(mouse.X, mouse.Y))
            {
                chemtile.drawRectangle.X = mouse.X - BoxWidth / 2;
                chemtile.drawRectangle.Y = mouse.Y - BoxHeight / 2;
            }
        }

1 个答案:

答案 0 :(得分:0)

你需要做一些电话Hit-Testing。基本上从屏幕的“顶部”到底部循环您的矩形。包含单击边界的第一个矩形是单击的矩形。找到第一个矩形后,您应该停止搜索。

使这项工作的关键是矩形需要以自上而下的顺序进行测试,它们在屏幕上以可视方式显示,并且只返回包含该点的第一个矩形。