2013-08-27 4 views
0

Так что я пытаюсь сделать функцию внутри класса «сцена», чтобы текст всплывал всякий раз, когда вы нажимаете «z» и продолжаете некоторое время блистать.Pygame - Blitting Text даже после нажатия клавиши

Если я использую pygame.key.get_pressed(), он только близит во время нажатия Z. Я хочу, чтобы он появился, когда Z нажата и продолжает оставаться на экране некоторое время.

##This is inside the "scene" class## 

def printText(self, surface): 
    if self.counter < 20: 
     text = pygame.font.SysFont("Pixelated Regular", 30) 
     label = text.render("Hello", 0, (0,0,0,)) 
     surface.blit(label, (100,100)) 
     self.counter += 1 


##This is inside the main## 
if key[pygame.K_z]: 
     robsHouse.printText(screen) 

Только в случае, если я не сделал это ясно перед: Я в принципе хочу это текст, который будет выведен на пару кадров, даже после того, как я отпустила «г».

Заранее спасибо.

+0

так в чем ваш вопрос? – bansi

ответ

1

Что я хотел бы сделать, это создать логическое значение для определения Wheter была нажата кнопка или нет

Вот пример:

self.pressed = False 

if key[pygame.K_z]: 
    self.pressed = True 

if self.pressed: 
    robsHouse.printText(screen) 

затем на то, когда вы хотите, чтобы текст уйти установить self.pressed чтобы False и он перестанет быть выведено

так:

def printText(self, surface): 
    if self.counter < 20: 
     text = pygame.font.SysFont("Pixelated Regular", 30) 
     label = text.render("Hello", 0, (0,0,0,)) 
     surface.blit(label, (100,100)) 
     self.counter += 1 
    else: 
     self.pressed = False 

Таким образом, как только счетчик закончится, текст исчезнет

Надеюсь, что это поможет!

+0

Поскольку текст не изменяется, вы можете сделать его один раз и разбить кешированную поверхность. Если вы хотите, чтобы класс автоматически выполнял это действие, см. Http://stackoverflow.com/a/15516132/341744 – ninMonkey

+0

Да, извлеките рендеринг из цикла, чтобы вы не делали его несколько раз, но сохраняете блики в цикле – Serial