【问题标题】:Get and Set properties doesn't change permanently c#, VS [closed]获取和设置属性不会永久更改 c#,VS [关闭]
【发布时间】:2013-03-08 22:11:19
【问题描述】:

我正在 Visual Studio 中开发我的 c# pac-man 游戏。

我有一个主精灵类和一个名为 User 的子类。用户应根据计算结果设置 x 位置和 y 位置。

我的计时器做什么:

 pictureBox1.Focus();
 paper.Clear(Color.Transparent);
 user.moveUser(keyValue);//Code1 shown below
 sprite.DrawSprites(paper);//Code shown below
 pictureBox1.Image = bmp;

这些方法背后的代码:

代码1:

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;

        }
    }

代码2:

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

感谢您的宝贵时间

【问题讨论】:

  • sprites.Drawsprites 上放置一个断点并检查那里的值。如果它们为 0,那么您没有在 moveUser 中修改正确的精灵实例

标签: c# inheritance properties get set


【解决方案1】:

它不会神奇地回到 0。

您很可能会创建一个新对象,而不是一直保持相同。所以问题不在于您发布的代码,而在于您使用/创建/修改对象的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 2012-07-27
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2014-02-14
    • 2017-01-07
    • 2021-09-06
    相关资源
    最近更新 更多