Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Sprite [Delphi]


Fog ©   (2003-01-03 19:21:00) 

Дайте пожалуйста конкретный пример того как сделать так чтобы спрайт НЕ изчезал уходя за края.(DelphiX)


Daddy   (2003-01-08 16:16:00) [1]

http://daddy.h1.ru/index.shtml?dxarticle4:

Решение 1. В пропетиес DXDraw (при этих значениях работает)
Align = alClient
AutoSize = False
doFlip = False
doCenter = True
Значения SurfaceHeight и SurfaceWidth делаем больше значений Height и Width на ширину тайла

Решение 2. Сделать рамку с шириной в пол-спрайта.
Решение 3. Написать новую процедуру отрисовки, где вычисляется положение тайлов. Если хоть часть тайла видна, то рисуем спрайт.


JB   (2003-01-06 09:43:00) [2]

люди, а чё вообще надо-то.
Fog если тебе надо нипускать спрайт (это если гама типа tetris), то

if (spx>DXW) then spx:=DXW; //DXW - ширина твоего DXDraw"a,
//spx - координата спрайта;


MRB_SPB   (2003-01-05 10:53:00) [3]

Рисовать конеxо незачем просто соответственно при уходе за правый край проверяем ScreenX<SpritreX
для левого края SpritreX+SpritreWidth>0
Для SpritreУ соответственно


Mirovodin   (2003-01-04 22:54:00) [4]

2 Fog ©
Правильно, само то обрезает но зачем рисовать спрайт с координатами X:=1000 Y:=1000l если в данный момент видно только окно (0,500; 0,300);


Владимир Васильев   (2003-01-04 16:47:00) [5]

>Подождите... У спрайта X,Y это его центр ......

Нет, это TOP-LEFT


MRB_SPB   (2003-01-04 16:07:00) [6]

Невидел ещё описаного тобой случая насколько я знаю DXDraw физически сам по себе обрезает пиксели только за пределами области просмотра так что такого быть не может.
А примеров по исчезанию спрайиов почти каждый второй в поставке демок.


Fog   (2003-01-04 12:04:00) [7]

Подождите... У спрайта X,Y это его центр. Когда они уходят за приделы DXDraw"a спрайт исчезает. Как этого избежать. Чтобы спрайт уходил за края до последнего пиксела.


Mirovodin   (2003-01-03 23:25:00) [8]

проверять координаты спрайта перед выводом, доп-м:

размер DX X(0;500) и Y(0;500)

Спрайт имеет координаты sprX и sprY

if (sprX>DX.X) or (sprX<0) - вышел за пределы X оси
так же для Y;


Fog   (2003-01-03 20:35:00) [9]

Края DXDraw"a.


Ketmar   (2003-01-03 20:20:00) [10]

то тогда и вопрос задавать надо понятно. откуда мы знаем, что там за края такие?

Satanas Nobiscum! 03-Jan-XXXVIII A.S.


Fog   (2003-01-03 20:03:00) [11]

Ну а если надо чтобы он уходил за края?


Ketmar   (2003-01-03 19:43:00) [12]

не выпускать его за края %-)

Satanas Nobiscum! 03-Jan-XXXVIII A.S.


Наверх

Титульная страница Поиск, карта сайта Написать письмо