如何访问主窗体的成员
本文关键字:窗体 成员 访问 何访问 | 更新日期: 2023-09-27 18:24:59
我只是在学习C#,我正在尝试制作一个2D游戏。我正处于为玩家设置Form1的"PictureBox"和玩家等级开始的阶段:
class Player
{
private string _name;
private int _health;
internal Player(string name, int health = 100)
{
_name = name;
_health = health;
}
int X = 0;
internal void Draw()
{
updateInput();
Draw();
}
internal void updateInput()
{
if(Keyboard.IsKeyDown(Key.Right))
X = 1;
else if (Keyboard.IsKeyDown(Key.Left))
X = -1;
else
X = 0;
}
}
有一个PictureBox"pb_play",它在主窗体上包含角色的精灵。我尝试将其访问修饰符设置为public,但没有帮助。我想通过X值的变化来改变角色的位置。因此,我试图从本质上访问该类窗体的成员。
我试图在draw方法中这样做,所以它会更新输入,然后设置位置,然后重复draw方法,不断循环。
如果有更好的方法,请随时教育我。我该如何解决这个问题?
编辑:好的,我把方法移到了UI中,正如一条评论所提到的。这是我所拥有的,但精灵拒绝移动:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Draw();
}
int X = 0;
internal void Draw()
{
updateInput();
pb_play.Location = new Point((pb_play.Location.X + X), 0);
Draw();
}
internal void updateInput()
{
if (Keyboard.IsKeyDown(Key.Right))
X = 5;
else if (Keyboard.IsKeyDown(Key.Left))
X = -5;
else
X = 0;
}
}
我用了一个计时器来解决这个问题:
internal void Draw()
{
pb_play.Location = new Point((pb_play.Location.X + X), (pb_play.Location.Y + Y));
}
internal void updateInput()
{
if (Keyboard.IsKeyDown(Key.Right))
X = 1;
else if (Keyboard.IsKeyDown(Key.Left))
X = -1;
else
X = 0;
if (Keyboard.IsKeyDown(Key.Up))
Y = -1;
else if (Keyboard.IsKeyDown(Key.Down))
Y = 1;
else
Y = 0;
}
private void timer1_Tick(object sender, EventArgs e)
{
updateInput();
Draw();
}