![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 02.05.2011
Сообщений: 45
|
![]()
Здравствуйте. Подскажите пожалуйста, как сделать задержку при выводе изображения для создания эффекта движения. Делала Sleep, ставила таймер - не помогает. После запуска программы ждет положенное время и выводит уже конечное (самое последнее) изображение.
![]() Вот процедура, где происходит рисование от левого до правого края формы. Translation - метод, пересчитывающий координаты фигуры после перемещения: Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
Я так полагаю, тема анимация в Делфи? Этим я не занимался, но по аналогичном опыту в Турбо Паскале могу посоветовать:
1. Строку включения таймера вынести за пределы цикла. 2. Всё-таки использовать Sleep, но в цикле, например, перед ClearDevice |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 02.05.2011
Сообщений: 45
|
![]()
Оба варианта безрезультатно(( Жалко долго мучаюсь, инет весь обшарила, там в основном только две этих темы: Sleep и таймер. Не помогает(
Код:
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
Так, подождите...
А что если весь этот код записать в процедуру обработки таймера, которая вызывается каждый раз при истечении заданного интервала? Поместите этот код туда (тогда никаких Sleep вам не надо будет), а при выходе из цикла (я так полагаю, это завершение анимации?) пишите Timer1.Enabled:=false |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 02.05.2011
Сообщений: 45
|
![]()
Уже лучше, теперь сначала выводится исходное изображение, потом положенная задержка и финальное изображение)
Код:
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
Мне ещё кажется, что дело в том, что
Код:
Всё-таки, очень мне кажется, что проблема здесь.............. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
Вообще-то очень похоже на гадание! к - локальная переменная? Если да, то зачем? Зачем весь Ваш цикл? Если включаете таймер, то в обработчике таймера всегда:
сначала отключаете таймер, что-то делаете, если необходимо - снова включаете таймер на выходе из обработчика и ждёте следующего события OnTimer. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
Кстати, да, действительно, цикл ни к чему. Просто при наступлении определённого условия надо выключить таймер: Timer1.Enabled:=false;
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 02.05.2011
Сообщений: 45
|
![]()
Код метода Translation:
Код:
Код:
А насчет k - это просто параметр цикла, мне же нужно как то определить, что достигнута правая граница формы (Ширина - длина корабля) и увеличиваю на 3 типо шаг 3, постоянно сдвигает фигуру на вектор (3,0) вправо. С таймером сейчас попробую без цикла) Последний раз редактировалось pupilMartyr; 03.05.2011 в 21:30. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 02.05.2011
Сообщений: 45
|
![]()
Супер! Спасибо большое!
Помогло с таймером! |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать скрипт вставки изображения!!!! | BAN_D_IT | Помощь студентам | 2 | 05.10.2010 23:01 |
Как заменить sleep в потоке? чтобы получить задержку 5 мили | Dasverd2010 | Общие вопросы Delphi | 13 | 07.09.2010 14:29 |
как сделать паузу (или задержку) в цыкле : с# | Natok | Помощь студентам | 7 | 30.05.2009 12:55 |
Как организовать задержку выполнения?? | Kenifer | Общие вопросы Delphi | 12 | 03.09.2007 21:56 |