Главная страница
    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.052 c
1-1101390432
Ricko
2004-11-25 16:47
2004.12.12
Использование DLL написанной на С++


4-1099031409
Shiza
2004-10-29 10:30
2004.12.12
Возможно ли если на одной линии находятся модем и телефон


1-1101701545
Галинка
2004-11-29 07:12
2004.12.12
Знает ли кто-нибудь размер формата А4 в пикселах


3-1100166911
ALex11
2004-11-11 12:55
2004.12.12
Wer ist das: Insufficient disk space.???


14-1100041467
GanibalLector
2004-11-10 02:04
2004.12.12
Даешь встречу в Харькове ???





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