事件后将图像更改为gif

时间:2019-05-17 12:43:41

标签: c# visual-studio winforms

我创建了一个游戏,我试图在敌人消失之前立即获得敌人的照片,但他们似乎消失了,但我似乎无法使其正常工作,您可以在下面的代码中找到它们它的意思是改为gif,但是当您支付游戏费用时,nemies就会消失而gif不会显示

 lasers.RemoveAll(laser => laser.isDisposed);
            foreach (Laser laser in lasers)
            {
                laser.MoveLaser(this);
                foreach (Invader ship in invaders)
                {
                    if (laser.laser.Bounds.IntersectsWith(ship.ship.Bounds))
                    {
                        laser.isDisposed = true;
                        laser.laser.Dispose();
                        ship.ship.Image = SpaceInvaders.Properties.Resources.explosionGIF1;
                        ship.isDisposed = true;
                        ship.ship.Dispose();
                        score = score + 2; //adds 2 points to players score if enemy is hit
                        lblScore.Text = score.ToString(); //updates the score label

1 个答案:

答案 0 :(得分:0)

@jimi解释

  

好吧,您将Image设置为对象的属性,然后处置应该显示它的对象。顺便说一句,不要尝试将[object] .isDisposed = true;设置为只读。仅在需要时丢弃对象。顺便说一句,您需要将Properties.Resources。[Some Image]分配给可重用的Image对象:现在,您每次都在生成一个新Image。

您正在处理飞船以及图像。
一个示例解决方案是创建一个新的GIF对象,该对象在播放一次后会自动释放。摧毁该船后,会在该船所在的位置创建一个新的GIF对象。