![]() |
|
Модераторы: Akina |
![]()
|
|
| DelphianOracle |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 20.5.2007 Репутация: нет Всего: нет |
Появилась такая проблема - надо чтобы процедура вызывалась, скажем, через секунду. Но вся проблема в том, что в это время программа должна не стоять, а двигаться дальше. Иными словами прога оставляет вузов процедуры на потом, а сама спокойно работает дальше.
Подскажите плз, как это лучше осуществить. |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Может таймер использовать?
-------------------- (С) kapbepucm |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Не может, а именно таймер.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| DelphianOracle |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 20.5.2007 Репутация: нет Всего: нет |
А без таймера можно? А то делать таймер для довольно редкой операции... помойму плохо
|
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
DelphianOracle, А что за операция такая????
-------------------- Я желаю всем Счастья! |
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: нет Всего: 8 |
В программировании встречаются ситуации, когд таймер нежелателен. Тогда применяется функция MsgWaitForMultypleObejctsEx. В частности, с помощью этой функции можно ждать определенный период времени или оконного сообщения.
Если у тебя именной такой случай - ищи описание и разбирайся. Если лень разбираться, значит это не тот случай, и тогда юзай таймеры. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
MsgWaitForMultipleObjectsEx хоть и не потребляет процессор, но приостанавливает исполнение кода... а у него
DelphianOracle, уточните задачу. Особенно в части: куда должно вернуться управление после наступления "часа икс", прерывания основного кода и выполнения отложенного. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: нет Всего: 8 |
||||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Почему плохо? ну валяется он себе в состоянии disabled... а когда понадобился - включается... а как сработал - снова выключается:
У меня есть куча программ, где это используется. В некоторых по 3-4 таймера - потому как подобные отсчеты могут идти параллельно... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| DelphianOracle |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 20.5.2007 Репутация: нет Всего: нет |
Ладно, таймер так таймер...
А задача примерно такова: В простой аркаде победа наступает после уничтожении всех врагов, => проверка осуществляется при попадании снаряда. А мне желательно, чтобы до вызова процедуры "победа" главный игровой цикл закончился (а то будет много потенциально опасных мест). Akina, твой пример ясен, до этого я и сам додумался, но я думал что можно лучше. |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
В данном случае подошло бы, если бы процедура "победа" ждала конца главного игрового цикла например с помощью WaitForMultipleObjects (как уже предлагал Tectoder); ведь хрен знает, какой интервал в таимере устанавливать- время до окончания главного цикла. А что мешает установить проверку "убиты ли все враги" в конце главного игрового цикла, ведь он сам себя завершит и передаст управление процедуре "победа" без особых проблем?
Это сообщение отредактировал(а) kapbepucm - 26.6.2007, 15:11 -------------------- (С) kapbepucm |
|||
|
||||
| DelphianOracle |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 20.5.2007 Репутация: нет Всего: нет |
Это как раз понятно, т.к. больше циклов не будет (general_game_timer.enabled=false). Проверку в главном игровом цикле я не хочу - это ооочень частая операция, и её надо оптимизировать как только можно |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Я имел в виду ситуацию, где главный цикл ещё не закончился и надо подождать его окончания; а не то, будет ли он вызываться заново или нет. Ну, типа, WaitForMultipleObjects в процедуре "победа" будет ждать два EVENT'а: признак победы и конец главного цикла. Год назад подобную хрень делал Это сообщение отредактировал(а) kapbepucm - 26.6.2007, 16:34 -------------------- (С) kapbepucm |
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: нет Всего: 8 |
Замечу, что я рекомендовал не WaitForMultipleObjects, а MsgWaitForMultypleObejctsEx
|
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
Tectoder, я упоминал слова "например" и "как" имея ввиду подобие деиствий- я не упоминал "именно так, как предлагал Tectoder". Тоже хочу заметить... В дальнейшем постараюсь более конкретнее ссылаться. Данную несостыковку я замечал.
Это сообщение отредактировал(а) kapbepucm - 26.6.2007, 19:10 -------------------- (С) kapbepucm |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |