-
2Dib@zol ©
Form.Canvash.Draw(...) - так и есть всё...
-
> mr.sokolOFF © (26.09.07 19:53) [17]
> А нелёгкий?)) Просто циклами обойтись, н-р? Или и то, и то?
Лёгкий в понимании. Некоторые движки имеют раздельные таймеры для обсчёта игрового тика и для обновления экрана.
Можно условно-бесконечным циклом с подсчётом тиков процессора (удобно и просто).
>А насчёт движка - я полагаю просто, что моего уровня (простирающегося лишь, как писал выше, до создания всяких "Компьютерщиков" и прочих "Туалетных империй") не хватает для написания "с нуля".
Чушь. Если в игре нет динамического формирования сцены, это не значит, что она плохая. Тот же "Компьютерщик", по функционалу и наполнению, послождее динамической змейки может быть. Просто РАЗНЫЙ тип задач.
Так что пробуй. Когда сделаешь полностью готовую игру, получшь непередаваемые ощущения. А начать лучше всего со звейки, тут я с Антоном Андреевичем [3] полностью согласен. Не шибко сложно, чтобы отпугнуть, и вполне себе с наполнением всякими фишками.
Если что - спрашивай, всегда ответим.
-
> Form.Canvash.Draw(...) - так и есть всё...
ыыы, не стоит, юзай canvas.copyrect() или BitBlt() для вывода буферного битмапа на форму. Больше никаких граней соприкосновения с формой быть не должно (ну нежелательно), все нужно рисовать на буферном битмапе.
> А начать лучше всего со звейки, тут я с Антоном Андреевичем
> [3] полностью согласен.
ура, я знаменит! %))
-
> antonn © (26.09.07 21:21) [22]
> ура, я знаменит! %))
Нет, я просто знаю как тебя зовут :)
-
Ламерский вопрос но... Как очистить canvash? По идее, для этого должна служить команда "Free", однако, при ней программа вылетает с ошибкой... а без очистки никакая анимация не идёт...
И это при том, что сам канваш создан и картинка на форме нормально рисуется...
-
не надо чистить канвас (вопрос странный - залить другим цветом - canvas.fiilrect()), надо использовать tbitmap
-
Free в Делфи - это вызов деструктора. Отсюда и AV. antonn дело говорит, юзай или TBitmap или HDC.
-
Схема примерно такая :
DrawBackground();
DrawGameObjects();
DrawGUI();
и ничего очищать не придеться. причем лучше это делать не в ОнПэйнт, а использовать так называемый мертвый цикл. Как вариант можно использовать компонент TTimer и его ивент OnTimer.
-
Погоди-ка. Даже если делать так... Всё равно всё тормозит при перемещении объекта по экрану (не очень сильно, но заметно всё)! Так какой смысл был городить этот огород?
-
Смысл в том что идет непрерывная перерисовка экрана. При анимации старый кадр спрайта будет оставаться как мусор если этого не делать. А тормозит из-за того что ты используешь Canvas\TBitmap и тд. Если хочешь чтоб не тормозило, то пиши на DirectDraw\D3D\OpenGL\ASM =) А мертвый цикл обработки логики и рендера это один из базовых приемов организации игр.
-
Ну ... ЭЭ... DirectDraw... Мне до подобного ещё 20 лет расти в уровне...
-
Та это тебе так кажется. Почитай книгу Михаила Краснова. Там все очень доступно и понятно описано.
-
А название почётче?..) что-то со словом "DirectX"?)
-
можно и с Tbitmap, вопрос только как его юзать:)
код давай:)
-
Михаил Краснов. DirectX. Графика в проектах Delphi .
-
Кста, движки типа Asphyre - не сильно быстрее GDI... Максимум в 1.5-2 раза Если грамотно GDI использовать - результат не хуже.
-
Используй функции формы alphablend:=true; and alphablendValue:=от1 до 255 так как тип byte это функции отрисовки формы, 255 полная отрисовка ну чем меньше тем прозрачние, иногда помогает решить такие проблемы как твоя устонови 250 визуально незаметно а ефект моргание может исчезнуть
-
-
Теме сто лет в обед...
Если кому-то что-то и нужно было, то оооочень давно.
-
я уже понял( но мало ли)