Get和Set属性不会永久改变c#, VS
本文关键字:改变 VS Set 属性 Get | 更新日期: 2023-09-27 18:02:57
我正在visual studio开发我的c#吃豆人游戏。
我有一个主精灵类和一个名为User的子类。用户应该设置x和y的位置,因为它计算它。
我的定时器做什么:
pictureBox1.Focus();
paper.Clear(Color.Transparent);
user.moveUser(keyValue);//Code1 shown below
sprite.DrawSprites(paper);//Code shown below
pictureBox1.Image = bmp;
方法背后的代码:
Code1:
public void moveUser(int mKeyValue)
{
switch (previousImage)
{
case false:
switch (mKeyValue)
{
case 39:
sprite.Image = imageArray[0];//left
sprite.XPos += stepsAmount;
break;
case 37:
sprite.Image = imageArray[1];//right
sprite.XPos -= stepsAmount;
break;
case 38:
sprite.Image = imageArray[2];//up
sprite.YPos -= stepsAmount;
break;
case 40:
sprite.Image = imageArray[3];//down
sprite.YPos += stepsAmount;
break;
}
previousImage = true;
break;
case true:
switch (mKeyValue)
{
case 39:
sprite.Image = imageArray[4];
break;
case 37:
sprite.Image = imageArray[5];
break;
case 38:
sprite.Image = imageArray[6];
break;
case 40:
sprite.Image = imageArray[7];
break;
}
previousImage = false;
break;
}
}
code2:
protected int xPos = 0, yPos = 0, size = 28;
public Image Image
{
get { return image; }
set { image = value; }
}
public int YPos
{
get { return yPos; }
set { yPos = value; }
}
public int XPos
{
get { return xPos; }
set { xPos = value; }
}
public void DrawSprites(Graphics drawArea)
{
drawArea.DrawImage(Image, xPos, yPos, size, size);
}
当我调试时,控制台运行moveUser方法,设置属性Xpos, YPos和Image被更改。但是当drawSprites方法运行时,这些变量返回0或原始赋值。我需要永久性地改变它们,这样我就可以移动我的小黄朋友了。
注意:不是所有的代码都已粘贴,只粘贴了需要的代码,如果您需要更多的代码,请直接询问。
注释2:User是Sprite的子类
感谢您的宝贵时间
不会神奇地回到0
你很可能创建了一个新对象,而不是一直保持同一个对象。因此,问题不在于您发布的代码,而是在您使用/创建/修改对象的地方。