Пигмея Позиционирование поверхности - PullRequest
1 голос
/ 11 апреля 2020

Как я понял, метод рисования в Pygame, 2-й аргумент функции blit (screen.blit(surface, (0,0))) сообщает Pygame, где рисовать заданную поверхность (например, смещение, с которого начинается рисование, или, скорее, размещение поверхность на экране). Хотя, из недавних экспериментов, кажется, что размещение поверхностей пигмеев фиксировано, и что (0,0) используется, чтобы обрезать поверхность, прежде чем пигмеи переместит ее на экран, в целях эффективности.

Действительно ли размещение поверхностей фиксировано ( мое последнее наблюдение верно)? и если да, есть ли другой способ удобно переместить уже нарисованную поверхность в другое место на экране? Или я должен реализовать свой собственный способ перемещения сложных "нарисованных" объектов?

Спасибо!

1 Ответ

1 голос
/ 11 апреля 2020

A pygame.Surface объект не имеет позиции, он имеет только размер. Обратите внимание, что местоположение объекта Rect, возвращаемого pygame.Surface.get_rect(), всегда (0, 0).
Когда вы blit a Surface вкл другой Surface, затем каждый пиксель копируется и размещается в соответствующей позиции пункта назначения Surface. Таким образом, всегда должна указываться позиция, когда Surface равен blit в пункте назначения Surface.


[...] если так, есть ли другой способ удобно переместить уже нарисованную поверхность в другое положение [...]

У вас есть Основа c недоразумение. A Surface не может быть «перемещен». Surface копируется на объект Surface, который связан с окном игры.
A Surface кажется движущимся, потому что вся сцена рисуется в каждом кадре. Сначала рисуется фон, затем объекты (спрайты, поверхности) рисуются поверх фона, и, наконец, отображение обновляется (в каждом кадре). Если в каждом кадре объект размещен в несколько ином положении, то объект, по-видимому, движется плавно.

...