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的子类

感谢您的宝贵时间

Get和Set属性不会永久改变c#, VS

不会神奇地回到0

你很可能创建了一个新对象,而不是一直保持同一个对象。因此,问题不在于您发布的代码,而是在您使用/创建/修改对象的地方。