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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение картинок 
:(
    Опции темы
Mew
  Дата 23.2.2005, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 16.8.2004
Где: Омск

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



Мне нужно, чтобы по экрану бегало 12 картинок, все в хаотичном движении... И когда пользователь нажимает на одну из картинок, она останавливалась и полностью подчинялась пользователю, то есть он еще мышкой перетаскивет куда ему нужно.... Как это реальзивать??

У меня конечно была одна идея через таймеры, но как мне кажеться 12 таймеров на формуме это чересчур...
А если ли другой вариант!!!
PM MAIL ICQ   Вверх
Snowy
Дата 23.2.2005, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата(Mew @ 23.2.2005, 08:04)
по экрану бегало 12 картинок

Это легко. Создаешь наследника от Timage, добавляешь параметры, необходимые для реализации алгоритма перемещения, процедуру, которая будет выполнять перемещение по заданному алгоритму, конструктор, деструктор.
Потом создаешь TList или массив из 12 объектов.
Создаешь 12 объектов. В конструкторе должны назначаться случайные параметры. Кидаешь на форму.
По таймеру бежишь по массиву и вызываешь метод движения для каждого объекта.

Цитата(Mew @ 23.2.2005, 08:04)
нажимает на одну из картинок, она останавливалась и полностью подчинялась пользователю,

Заведи параметр, который будет говорить о том, что не нужно вызывать процедуру движения.

Цитата(Mew @ 23.2.2005, 08:04)
2 таймеров на формуме это чересчур...

Это лишнее. Одного таймера на 12 объектов более чем достаточно.
PM MAIL   Вверх
Александра
Дата 24.2.2005, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.2.2005
Где: Москва

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



Mew
а еще проше так:

Код
const n = 3; // кол-во картинок
var FDown: TImage; { здесь хранится компонент TImage,
                    который перемешается в данный момент. Если nil, значит
                    ничто не перемешается }
   ox, oy: integer; // смешение по X и Y при нажатии на картинку
   images: array [1..n] of TImage;

procedure TForm1.FormCreate(Sender: TObject);
begin
 images[1] := image1;
 images[2] := image2;
 images[3] := image3;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 ox := x;
 oy := y;
 fdown := timage(sender);
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FDown := nil
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
var pt: TPoint;
begin
 if (msg.message = WM_MOUSEMOVE) and (FDown <> nil) then begin
   pt := ScreenToClient(msg.pt);
   fdown.SetBounds(pt.x-ox, pt.y-oy, fdown.Width, fdown.Height);
  end
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var i: byte;
begin
 for i := 1 to n do
   if images[i] <> FDown then begin
     // здесь алгоритм передвижения, для примера они просто появляются случайно в другом месте
     images[i].SetBounds(random(width), random(height), images[i].Width, images[i].Height);
   end;
end;


всем Image'ам присвой одни и те же коды обработки OnMouseDown и OnMouseUp
с таймером понятно...
также еще на форму брось ApplicationEvents и назначь ему OnMessage
--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

FAQ раздела лежит здесь!


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

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


 




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


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

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