面板背景图像不会改变命令?

时间:2014-02-15 02:57:18

标签: c# timer bitmap panel

我有一个游戏,无论何时你射击,它都会激活子弹的计时器。在计时器(将是下面的代码的位)中,它检测子弹的界限是否与敌人的界限相交。如果是这样,让敌人变红一秒,然后将他改回来。 以下代码是我在计时器底部的代码:

            if (Bullet.Bounds.IntersectsWith(Enemy.Bounds))
            {
                if (isProne)
                {
                    Enemy.BackgroundImage = TheEnemyHurt;
                    Bullet.Location = new Point(421, 236);
                    Bullet.Visible = false;
                    shooting = false;
                    Enemy.BackgroundImage = TheEnemy;
                    bulletTimer.Stop();
                }
                else if (!isProne)
                {
                    Enemy.BackgroundImage = TheEnemyHurt;
                    Bullet.Location = new Point(515, 143);
                    Bullet.Visible = false;
                    shooting = false;
                    Enemy.BackgroundImage = TheEnemy;
                    bulletTimer.Stop();
                }
            }

但它只是让它成为常规的敌人形象(TheEnemy) TheEnemy和TheEnemyHurt都是代码顶部的位图:

    Bitmap TheEnemy = new Bitmap(Resources.Enemy_Bigger_);
    Bitmap TheEnemyHurt = new Bitmap(Resources.EnemyHurt_Bigger_);

我只是不知道为什么它会像常规图像一样停留,并且不会在一秒钟内转向受伤的图像?谢谢!

1 个答案:

答案 0 :(得分:1)

我相信您的问题是您正在更改面板BG 但会立即将其更改。你在做:

Enemy.BackgroundImage = TheEnemyHurt;
Bullet.Location = new Point(421, 236);
Bullet.Visible = false;
shooting = false;
Enemy.BackgroundImage = TheEnemy;

因此,您正在更改背景,但可能会在屏幕刷新之前将其更改回来。您可以尝试使用另一个这样的计时器(伪代码):

bulletTimer:

Enemy.BackgroundImage = TheEnemyHurt;
Bullet.Location = new Point(421, 236);
Bullet.Visible = false;
shooting = false;
bulletTimer.Stop();
hurttimer.Start();

hurttimer:

Enemy.BackgroundImage = TheEnemy;
hurttimer.Stop();

根据你设置hurttimer的间隔时间,这是敌人应该受伤多长时间。 HTH