Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Убегающая картинка 
:(
    Опции темы
Turgenev
Дата 29.11.2012, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.11.2012

Репутация: нет
Всего: нет



Хочется сделать, чтобы картинка плавно убегала от курсора. Если реализовать это путем прибавления числа к координатам картинки при наведении на нее курсора, то все это будет скачкообразно. Если число уменьшить, то картинка не будет успевать убегать от курсора и все это будет очень медленно. Все что я здесь написал я проверил программным путем. Хочется сделать чтобы картинка убегала методом анимации. Ниже приведу код проги анимации, в котором хочу сделать чтобы картинка korb убегала от курсора так же, как она двигается по fon. Подскажите пожалуйста как это сделать.
Код

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;
type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
   fon:tbitmap;
  KORB:TBITMAP;
  x:integer;
  shx:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
shx:=6;
fon:=tbitmap.Create;
korb:=tbitmap.Create;
fon.LoadFromFile('fon.bmp');
korb.LoadFromFile('korb.bmp');
korb.transparent:=true;
image1.Canvas.Draw(0,0,fon);
image1.Canvas.Draw(x,60,korb);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
x:=x+shx;
if x>500 then shx:=shx*-1;
if x<0 then shx:=shx*-1;
image1.Canvas.Draw(0,0,fon);
image1.Canvas.Draw(x,60,korb);
end;
end.
 

PM MAIL   Вверх
DarkProg
Дата 29.11.2012, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 4
Всего: 19



Что-то вы по странному пути пошли. Вы что хотите реализовать чтобы картинка всегда убегала от пользователя?
Тогда вам надо реагировать на событие OnMouseMove. Не надо никаких таймеров.
Вдобавок ещё будет мерцать если постоянно перерисовывать. Возьмите TImage и двигайте его. Если надо, то несколько TImage.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Turgenev
Дата 29.11.2012, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.11.2012

Репутация: нет
Всего: нет



Ну если OnMouseMove что будет дерганно убегать, а надо плавно.
Код

procedure TForm1.Button3MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var index:integer;
begin
index := random(4);
case index of
0: Button3.Left := Button3.Left +5;
1: Button3.Left := Button3.Left -5;
2: Button3.Top := Button3.Top +5;
3: Button3.Top := Button3.Top -5;
end;

Это дерганно, надо анимированно, плавно. И картинка не мерцает в примере первого сообщения
PM MAIL   Вверх
DarkProg
Дата 30.11.2012, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 4
Всего: 19



Ну так её дёргает потому что каждый раз при любом смещении хотя бы на 1 пиксель мыши у вас в произвольную сторону дёргает на 5 пикселей...

К примеру такой код не совсем даёт нужный эффект, но хотя бы что-то
Код

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  Button1.Left:=X+1;
  Button1.Top:=Y+1;
end;



--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Turgenev
Дата 1.12.2012, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.11.2012

Репутация: нет
Всего: нет



DarkProg, а что изменилось в твоем коде относительно моего, за исключением рандома и кол-ва пикселей? Ты так же прибавляешь к координатам кнопки числа и в своем примере я так же могу убрать 5 и поставить 1, только в твоем кнопка стандартно будет убегать в левый верхний угол
PM MAIL   Вверх
DarkProg
Дата 2.12.2012, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 4
Всего: 19



Цитата(Turgenev @  1.12.2012,  16:17 Найти цитируемый пост)
DarkProg, а что изменилось в твоем коде относительно моего, за исключением рандома и кол-ва пикселей?

Ну во первых у меня не будет дёргать если вести мышкой по экрану. Если двигать более чем на 1 пиксель, то точно будет дерготня.
Во вторых я привязался к координатам мыши на форме. Я точно знаю где мыша и соответственно двигаюсь относительно координат. Можно хранить несколько значений координат и предсказывать откуда пользователь надвигает мышой, тогда можно будет плавненько отодвигаться.

В твоём примере у тебя при движении дёргает в произвольную сторону, в результате чего происходит хаос...

Цитата(Turgenev @  1.12.2012,  16:17 Найти цитируемый пост)
только в твоем кнопка стандартно будет убегать в левый верхний угол 

кнопка всегда будет чуть ниже чем указатель мыши ;)


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.