![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Спрайты... [Delphi, Windows]
Destroyer © (2003-09-17 14:41:00)Подскажите пожалуйста как объяснить Delphi что некоторый спрайт должен находиться позади другого, т.к. он дальше чем другой
***Мао Дзядун*** (2004-03-09 23:10:00) [1]ААААААААААААА !!!!!!!!! Мне бы научится со спрайтами работать ............ :(((((
Ландграф Павел (2003-09-17 19:16:00) [2]Лучше еще при загрузке всех спрайтов создать массив с именами спрайтов и их значениями Y, потом сортируешь в порядке возрастания и выводишь на экран те, которые находятся в данный момент на экране, при динамическом создании спрайтов всего один раз при создании добавить новый элемент в массив и заново пересортировать, или просто посмотри как реализована .z координата в delphiX
pasha_676 (2003-09-17 16:55:00) [3]
> Кстати, применим ли к массиву спрайтов метод быстрой сортировки?
> И эффективно ли это? Хотя бы для той же z.
Ну сортируешь не спрайты же... А ссылки на объекты (которые включают в себя и сами спрайты конечно) по полю Z. Какая блин разница?
MeF88 (2003-09-17 16:33:00) [4]Кстати, применим ли к массиву спрайтов метод быстрой сортировки? И эффективно ли это? Хотя бы для той же z.
pasha_676 (2003-09-17 16:10:00) [5]
> А если спрайтов много... То тогда на все это будет уходить
> много времени
Сортировка будет занимать меньше времени, чем вывод на экран. Гораздо меньше...
Но можно конечно сделать "слоистую" систему. Допустим 10 слоев по Z. При перемещении объекта по Z он (вернее указатель на него) помещается в соответствующий слой. Потом инфа выводиться по слоям по принцыпу - дальний первый.
Так же можно объекты представить в виде связанного списка. При этом если объект перемещается по Z, то список разрывается, "дырка" связывается. Объект "ищит" по возрастанию куда вклиниться. Так что бы Z соседей была соответственно больше(равна) и меньше(равна). После чего произвести "врезку" в список. Кстати под вопросом будет ли это быстрее сортировки по возрастанию.
Darthman (2003-09-17 16:08:00) [6]var
i : integer;
begin
for z:=0 to zmax do
for i:=0 to SpritesCount-1 do
if sprite[i].z=z then sprite[i].draw;
и чего тут непонятного?
HoloCaust (2003-09-17 15:13:00) [7]Сначала скажи на чем ты пишешь, а еще всегда новые объекты отрисовываются поверх старых.
Destroyer (2003-09-17 15:00:00) [8]А если спрайтов много... То тогда на все это будет уходить много времени. И как можно объяснить Делфи кто именно должен отрисовываться раньше. Заранее спасибо!
HoloCaust (2003-09-17 14:57:00) [9]Если тебе необходимо распределить объекты на стандартной форме, то кликаешь по нему правой кнопкой мыши, выбираешь пункт Control, а далее - либо Bring To Front (вперед), либо Send To Back (назад)
pasha_676 (2003-09-17 14:49:00) [10]Виртуальная координата Z. Чем она дальше от экрана - тем раньше отрисовывается спрайт.
HoloCaust (2003-09-17 14:48:00) [11]Для этого существует координата Z