Главная страница
    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.56 MB
Время: 0.051 c
14-1100879366
Ilya___
2004-11-19 18:49
2004.12.12
У меня есть строковое значение 3294567000 Мне нужно его перевест


14-1100796664
matt
2004-11-18 19:51
2004.12.12
InterBase 6


4-1098537987
Funt_IK
2004-10-23 17:26
2004.12.12
Запись на CD


14-1101237650
GanibalLector
2004-11-23 22:20
2004.12.12
Невозможно найти удаленный сервер


14-1100975283
Shadow-st
2004-11-20 21:28
2004.12.12
ipframe





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский