Я работаю с формой Visual Studio c #. У меня есть класс со следующими свойствами:
string Name;
int NumberOfHitBoxes;
Point Hit1;
Point Hit2;
Point Hit3;
У меня есть событие mouseMove, которое определяет, находится ли мышь в «хитбоксе», и работает нормально.как это: (в остальной части (p.Hit1.X))
picture.MouseMove += (sender, e) =>
{
var c = sender as PictureBox;
bool h=false;
if (null == c) return;
if (_dragging)
{
c.Top = e.Y + c.Top - _yPos;
c.Left = e.X + c.Left - _xPos;
}
else
{
if ((e.X>p.Hit1.X)&&(e.X<p.Hit1.X+hitw)&&(e.Y>p.Hit1.Y)&&(e.Y<p.Hit1.Y+hitw)){hitbox(c,p.Hit1.X,p.Hit1.Y,8);h=true;tb.Text = p.Type;hitok = p.Input1Point;}
if ((e.X>p.Hit2.X)&&(e.X<p.Hit2.X+hitw)&&(e.Y>p.Hit2.Y)&&(e.Y<p.Hit2.Y+hitw)){hitbox(c,p.Hit2.X,p.Hit2.Y,8);h=true;tb.Text = p.Type;hitok = p.Input2Point;}
if ((e.X>p.Hit3.X)&&(e.X<p.Hit3.X+hitw)&&(e.Y>p.Hit3.Y)&&(e.Y<p.Hit3.Y+hitw)){hitbox(c,p.Hit3.X,p.Hit3.Y,8);h=true;tb.Text = p.Type;hitok = p.Output1Point;}
}
if (!h){picture.Refresh();h=false;hitok = new Point(0,0);}
};
Количество hitboxex warry, поэтому я хочу сделать что-то вроде этого:
picture.MouseMove += (sender, e) =>
{
var c = sender as PictureBox;
bool h=false;
if (null == c) return;
if (_dragging)
{
c.Top = e.Y + c.Top - _yPos;
c.Left = e.X + c.Left - _xPos;
}
else
{
for (int x =1;x<g.NumberOfHitBoxes;x++)
{
if ((e.X>p["Hit"+x.ToString();].X)&&(e.X<p["Hit"+x.ToString();].X+hitw)&&(e.Y>p["Hit"+x.ToString();].Y)&&(e.Y<p["Hit"+x.ToString();].Y+hitw)){hitbox(c,p["Hit"+x.ToString();].X,p["Hit"+x.ToString();].Y,8);h=true;tb.Text = p.Type;hitok = p["Input"+x.ToString()+"Point"];}
}
}
if (!h){picture.Refresh();h=false;hitok = new Point(0,0);}
};
Упрощенный:
int x = 1;
int whatever = p["Hit"+x.ToString()].X;
Вместо этого:
int whatever = p.Hit1.X;
Какой-нибудь умный умный человек, возможно, может научить тупицу вроде меня маленькой уловке ??