2015-08-16 2 views
-2

В программе, которую я создаю в python/pygame, screen.blit не работает. Во всех других программах, которые я сделал, screen.blit работает.Pygame screen.blit не работает

Error: 
    Traceback (most recent call last): 
    File "C:...\Main.py", line 46, in <module> 
    screen.blit(sight.image, sight.rect) 
AttributeError: 'int' object has no attribute 'blit' 
+2

Это означает, что ваша переменная экрана является int. Возможно, вы перезаписали его – muddyfish

+0

Переменная экрана: screen = pygame.display.set_mode ((600, 400), 0, 32) – AnonymousPerson

+2

Я имею в виду позже в программе - распечатайте ее перед ошибкой – muddyfish

ответ

1

Ошибка в вопросе вызвана переменным экрана выделяется на целое число вместо pygame.Surface() object.Perhaps вы случайно переписали переменную где-нибудь?

Из того, что я могу сделать из того, что вы делаете, также кажется, что вы заявляете, что положение blit - это полный прямоугольник вместо координаты.

когда вы делаете:

screen.blit(sight.image,sight.rect) 

Что программа видит это:

screen.blit(sight.image,(sight.rect.x,sight.rect.y,sight.rect.width,sight.rect.height)) 

Я предполагаю, что вы не намерены делать это. Помните, что прямой объект состоит из положения, ширины и высоты.

Чтобы исправить код, положить (sight.rect.x, sight.rect.y), где местоположение идет вместо так:

screen.blit(sight.image,(sight.rect.x,sight.rect.y)) 

в .x и .y соответствуют левому верхнему углу прямоугольника в углов в плоскости пикселя (x, y). Затем в этом месте появится изображение визирования.

Если вы хотите прочитать на объекте pygame.Rect, я выложу ссылку на это документация here

Я надеюсь, что это помогает. :)

Смежные вопросы