Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Помогите со спрайтами!   Найти похожие ветки 

 
_YoungDelphin_   (2004-08-16 19:03) [0]

Люди! В одной из статей по созданию спрайтов я читал о таком методе вывода спрайтов, как с помощью компонента TImageList типа  ImageList1.Draw(Canvas,0,0,1). А вот как потом такому спрайту присвоить обработчик события? Ну, например, я хочу его выбрать, чтобы потом указать ему, куда надо идти.


 
Servelat ©   (2004-08-16 19:59) [1]

Дело в том, что спрайт - это понятие аналитическое, не связанное с программированием и компонентами. Коротко, спрайт - это картинка на экране, способная менять положение, рамер, цвет. Часто спрайтами называют героя и все игровые объекты в 2D играх (в 3D спрайт это несколько другое). Компонент ImageList нужен только для хранения и отрисовки картинок, он о том, что такое спрайт понятия не имеет.
>ImageList1.Draw(Canvas,0,0,1)
Вот эта строчка заставляетImageList вывести изображение №1 на некий Canvas  с некоторыми координатами. Никаких обработчиков, координат, возможности выбора и т.п. уже отрисованная картинка не имеет, это просто узор из пикселей на экране монитора.
В играх обычно так поступают: по таймеру - закрашивают всю область вывода каким нить цветом (выводят фон), и отрисовывают все картинки в нужные места, используя глобальные переменные, классы и т.п., что больше нравится. То есть объявляются целочисленные переменные X и Y, при нажатии на клавиши значения этих переменных изменяются. Отрисовка картинки же происходит используя эти переменные (типа ImageList1.Draw(Canvas,X,Y,1)). Если переменых становится много, то их удобнее заменить классом.
Правда, при выводе через Canvas скорость оставляет желать лучшего, так что часто приходится навешивать кучу оптимизаций, из-за чего теряется легкочитабельность кода. Поэтому в хоть сколько то требовательных к скорости вывода графики программах используют DirectX/OpenGL API.


 
_YoungDelphin_   (2004-08-16 22:27) [2]

Хорошо, объясните, пожалуйста, как сделать так, чтобы мои герои реагировали на то, что я их, например, выбираю мышью. Как мне с ними работать?


 
Mihey_temporary ©   (2004-08-17 00:32) [3]

>Как мне с ними работать?

Хранишь данные герое в массиве. Обрабатываешь щелчок мышью на том компоненте, на котором рисуешь изображение, получаешь координаты мыши. Сравниваешь, попадают ли эти координаты в рамку, занимаемую изображением героя (для каждого героя проверяешь просто проходя по массиву). Если попадают - в него и ткнули. Дальнейшее тривиально.



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
14-1101370001
Zhekson
2004-11-25 11:06
2004.12.12
Для души:


14-1100791925
Гарри Поттер
2004-11-18 18:32
2004.12.12
Помогите с составлением сметы на монтаж локальной сети


3-1100183124
red_imp
2004-11-11 17:25
2004.12.12
Народ помогите пожалуйста, как в QReport в SubDetail вставить


1-1101743328
Alek
2004-11-29 18:48
2004.12.12
С сишки на делфи ...


1-1100774315
Саша
2004-11-18 13:38
2004.12.12
Цвет выделенных ячеек в StringGrid