Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
_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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.037 c
3-1100446917
kein
2004-11-14 18:41
2004.12.12
копирование из базы в базу


14-1101212056
VictorT
2004-11-23 15:14
2004.12.12
Нужно по быстрому написать програмку на Турбо Си (досовском)


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


9-1092038968
NikeOLD
2004-08-09 12:09
2004.12.12
OpenGL дисплейные списки


14-1101378308
TUser
2004-11-25 13:25
2004.12.12
inline





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский