Главная страница
    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.45 MB
Время: 0.035 c
1-1101892691
big noob
2004-12-01 12:18
2004.12.12
подскажите алгоритм как число написать прописью


1-1101599957
Bobby Digital
2004-11-28 02:59
2004.12.12
Install


4-1099032593
WaS
2004-10-29 10:49
2004.12.12
Как определить активен ли сейчас рабочий стол????


4-1098948731
Lexx3D
2004-10-28 11:32
2004.12.12
CD, DVD приводы...


3-1100317736
Under
2004-11-13 06:48
2004.12.12
INFORMATION_SCHEMA в Access





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