Форум программистов, компьютерный форум, киберфорум
Наши страницы
XNA/MonoGame
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/17: Рейтинг темы: голосов - 17, средняя оценка - 4.94
Alecs--
4 / 4 / 1
Регистрация: 25.07.2010
Сообщений: 23
1

Удаление экземпляра класса

20.01.2011, 19:53. Просмотров 3092. Ответов 1
Метки нет (Все метки)

Здравствуйте. Пытаюсь написать игру.

В игре по заданным координатам создаётся экземпляр класса. Мне нужно, что бы по истечении 3 секунд после инициализации экземпляра - он был уничтожен.
Я попробовал создавать таймер на 3 секунды, по истечении которого должно быть уничтожение объекта.
Пробовал уничтожать через this.Dispose(); , но после его применения, создавать экземпляры класса нельзя.
Подскажите пожалуйста решение моей проблемы.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    public class object : objclass
    {
 
        public object(Game game, ref Texture2D _sprTexture,
            Rectangle _sprRectangle, Vector2 _sprPosition)
            : base(game, ref _sprTexture, _sprPosition, _sprRectangle)
    {
            
    }
 
        public void OnTimedEvent(object source, ElapsedEventArgs e) //Таймер истекает
        {
            //??? как удалить экземпляр класса???
        }
        public override void Initialize()
        {
          
            System.Timers.Timer tmr = new System.Timers.Timer(); //создаю таймер на три секунды
            tmr.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            tmr.Interval = 3000;
            tmr.Enabled = true; 
            base.Initialize();
        }
 
 
        public override void Update(GameTime gameTime)
        {
 
            base.Update(gameTime);
        }
    }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2011, 19:53
Ответы с готовыми решениями:

Удаление экземпляра класса в функции самого класса (Ошибка при отладке)
Допустим, у нас есть класс Buffer, который хранит в себе указатель на класс некоторой матрицы и...

Удаление экземпляра класса
Хочу уточнить у вас, если я удаляю экземпляр класса через ремувчайлд, то все дети его с их...

Удаление экземпляра класса
нужно при помощи кнопки удалить выбранный в treeview экземпляр класса. объявление массивов...

Удаление экземпляра класса
Экземпляры класса хранятся в коллекции Collection = Как экземпляру уничтожить себя, и как это...

Почему при вызове метода у экземпляра класса он сначала ищет у экземпляра
Всем привет, после прочтения Лутца про ООП появился такой вопрос почему при вызове метода у...

1
Wallstrider
0 / 0 / 0
Регистрация: 22.04.2017
31.05.2011, 19:55 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System.Diagnostics;
// Класс с которого будем делать экземпляры
public class deleteMe
{
   public int Param0 {get;set;}
   public string Param1 {get;set;}
  // конструктор
  public deleteMe(int param0, string param1) // параметры для вида просто
  {
      this.Param0 = param0;
      this.Param1 = param1;
  }
}
 
class MyGame : Game
{
// Создаем коллекцию для экземпляров класса deleteMe
List<deleteMe> deleteMeList = new List<deleteMe>();
 
// Таймер для удаления экземпляров из коллекции
StopWatch sw = new StopWatch();
 
// Время до удаления нашего экземпляра из коллекции
TimeSpan lifeTime = TimeSpan.FromMilliseconds(3000); // 3 sec
 
public MyGame()
{
private string trololo = "ололо";
// Добавляем в коллекцию экземпляры класса deleteMe например 10 штук.
// Можно их добавлять например в методе Update() для примера я запихал их в конструктор
for (int i=0; i < 10; i++)
     deleteMeList.Add(new deleteMe(i , trololo));
}
// Метод удаления из коллекции экземпляра класса
private void DisposeDeleteMe()
{
if (sw.Elapsed == TimeSpan.Zero)
     sw.Start();
if (sw.Elapsed >= lifeTime)
     deleteMeList.RemoveAt(0);
}
 
protected override void Update(GameTime gameTime)
{
   base.Update(gameTime);
// Удаляет 1 экземпляр с начала каждые 3 секунды
// Здесь же можно добавлять экземпляры в коллекцию и тут же удалять когда это надо
   DisposeDeleteMe();
}
 
}
Код не компилировал, просто написал как пример. На мой взгляд самый простой способ избавлять от экземпляров класса.
Суть в том чтобы просто создать коллекцию экземпляров класса и потом удалять из коллекции эти экземпляры с помощью метода RemoveAt("индекс экземпляра") коллекции List<>. Еще можно использовать очередь Queue<>. Вообще коллекции очень полезная вещь.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2011, 19:55

Создание экземпляра класса, разрушение экземпляра класса
Не могу найти информацию про разрущение экземпляра класса. Объясните пожалуйста, что это?

При создании экземпляра класса, создается 2 экземпляра вместо 1
Подсчет экземпляров ведется с помощью статического члена num_dogs, который во всех трех...

Создание нового экземпляра дочернего класса из экземпляра базового
Всем привет! Извиняюсь, если вопрос глупый, но что-то не смог найти конкретный ответ на него... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru