#python #pygame #surface
#python #pygame #Поверхность
Вопрос:
У меня есть игровой класс, основанный на поверхности pygame, и я инициализирую его следующим образом:
game_obj(pygame.Surface)
def __init__(self, x, y, width, height):
super(game_obj, self).__init__((width, height)
Позже в игре я хочу, чтобы объект изменил размер, поэтому я снова вызвал super(), но, похоже, у него неправильный размер, или когда я заполняю его, он заполняется неправильно. Есть ли что-то еще, что мне нужно сделать?
Комментарии:
1. повторное использование только
super()
не меняет его. Использованиеsuper().__init__()
может изменить это, но я бы предпочел создать новый экземплярgame_obj
с новым размером и скопировать элементы из старого экземпляра в новый и удалить старый экземпляр. Или я бы создал объект с двумя поверхностями — меньшей и большей и сохранил обе.2. Спасибо, выполнение Surface.init (self, w, h) сработало!! Не вижу стрелки вверх, чтобы я мог пометить ее как лучший ответ, сделаю это, когда появится стрелка!
Ответ №1:
Повторное использование only super()
ничего не меняет. Использование super().__init__()
может изменить это, но я бы предпочел создать новый экземпляр game_obj
с новым размером и скопировать элементы из старого экземпляра в новый и удалить старый экземпляр.
Или я бы создал объект с двумя поверхностями — меньшей и большей — и сохранил обе.
Комментарии:
1. Если нет какой-либо документально подтвержденной гарантии, что повторный вызов
__init__()
ничего не испортит, я бы не рекомендовал этого делать. Например, это может быть просто вызовSDL_CreateRGBSurface
без освобождения поверхности от первого__init__()
.