Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.01.2012, 22:52
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию Плавное движение

Собственно "плавное движение" объектов.
Хотелось бы организовать плавное передвижение объекта (TImage).
Вот здесь это довольно таки хорошо получилось, но вот что-то разобрать код не получается.
Код:
Canvas.MoveTo(i*CW,0);
Canvas.LineTo(i*CW,ClientHeight);
Подскажите что к чему.
Вложения
Тип файла: rar paytnaski.rar (7.7 Кбайт, 70 просмотров)
Ответить с цитированием
  #2  
Старый 18.01.2012, 23:27
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Удалено...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 23.01.2012 в 23:43.
Ответить с цитированием
  #3  
Старый 19.01.2012, 00:31
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Вот ещё пятнашки.
Ага. Хороши. И опять таки без формы и непонятно как оно это все работает...
Ответить с цитированием
  #4  
Старый 19.01.2012, 00:40
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Удалено...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 23.01.2012 в 23:43.
Ответить с цитированием
  #5  
Старый 19.01.2012, 01:23
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Да оно больше напоминает движение части изображения в одном большом изображении.
Полистав форумы, вывод был таков что плавное движение, это движение в таймере каждых к примеру 10 мили секунд на 2 px но это и так ясно
Ответить с цитированием
  #6  
Старый 19.01.2012, 12:06
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Удалено...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 23.01.2012 в 23:43.
Ответить с цитированием
  #7  
Старый 19.01.2012, 14:38
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Что-то аж запутался немного. Одно накладывается на другое, причем другое еще может и двигаться.
Ответить с цитированием
  #8  
Старый 19.01.2012, 21:25
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Удалено...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 23.01.2012 в 23:43.
Ответить с цитированием
  #9  
Старый 20.01.2012, 09:51
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Цитата:
движение это только иллюзия
время тоже иллюзия
PHP код:
type
  TIllusion 
= class
  private
    
itTControl;
    
stepstepsInteger;
    
x0y0Integer;
    
dxdydouble;
    
timerTTimer;
  public
    
constructor Create(aitTControlxyastepsintegerintervalinteger 1);
    
destructor Destroyoverride;
    
procedure event(sendertobject);
  
end;

procedure MoveIt(itTControlxyIntegerstepsinteger 50intervalinteger 1);
begin
  TIllusion
.Create(itxystepsinterval);
end;

TIllusion }

constructor TIllusion.Create(aitTControlxyastepsintervalinteger);
begin
  it 
:= ait;
  
step := 0;
  
steps := asteps;
  
x0 := it.Left;
  
y0 := it.Top;
  
dx := (x-x0)/steps;
  
dy := (y-y0)/steps;

  
timer := TTimer.Create(nil);
  
timer.Interval := interval;
  
timer.OnTimer := event;
end;

destructor TIllusion.Destroy;
begin
  timer
.Free;
end;

procedure TIllusion.event(sendertobject);
begin
  step 
:= step 1;
  
it.Left := round(x0+dx*step);
  
it.Top := round(y0+dy*step);
  if 
step steps then
    Free
;
end;

procedure TForm1.FormMouseDown(SenderTObjectButtonTMouseButton;
  
ShiftTShiftStateXYInteger);
begin
  MoveIt
(Image1xy);
end
Вложения
Тип файла: 7z mover.7z (5.1 Кбайт, 27 просмотров)
Ответить с цитированием
  #10  
Старый 20.01.2012, 10:43
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Удалено...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 23.01.2012 в 23:44.
Ответить с цитированием
  #11  
Старый 20.01.2012, 11:15
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

[off]
у меня другой подход: время есть только в уме. а ума нет... да, на физику не ходил
[/off]
Ответить с цитированием
  #12  
Старый 20.01.2012, 14:48
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Понимаешь же, движение это только иллюзия. Имеем на форме таймер, битмап с основным изображением и битмапы с изображениями, которые "двигаем". Также дополнительный (буферный) битмап куда собираем картинку перед выводом. Запустился таймер, начали меняться координаты движимой картинки. Копируем в буферный битмап основную картинку, поверх накладываем движимую картинку. Всё это выводим на экран. Таймер запустил новый цикл и поменял координаты, повторяем вышеизложенное.
Что-то вроде такого? До такого я Вот только при удержании кнопки движения, заметно мерцают белые полосы.
Вложения
Тип файла: rar Game.rar (165.2 Кбайт, 16 просмотров)
Ответить с цитированием
  #13  
Старый 20.01.2012, 17:14
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Удалено...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 23.01.2012 в 23:44.
Ответить с цитированием
  #14  
Старый 20.01.2012, 18:39
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Посмотри установлен ли DoubleBuffered в True.
Где это такое находится? В свойствах такого нету.
Ответить с цитированием
  #15  
Старый 20.01.2012, 21:13
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Удалено...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 23.01.2012 в 23:44.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter