[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[pygame] Substantial Lag
- To: <pygame-users@xxxxxxxx>
- Subject: [pygame] Substantial Lag
- From: "Ryan Strunk" <ryan.strunk@xxxxxxxxx>
- Date: Sun, 12 Feb 2012 19:02:49 -0600
- Delivered-to: archiver@xxxxxxxx
- Delivered-to: pygame-users-outgoing@xxxxxxxx
- Delivered-to: pygame-users@xxxxxxxx
- Delivery-date: Sun, 12 Feb 2012 20:02:57 -0500
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:subject:date:message-id:mime-version:content-type :content-transfer-encoding:x-mailer:thread-index:content-language; bh=MyFZnrcV29PRR8UZ3fF72i/HlcvgYkeW2dGlrmO48UI=; b=WvM5evbek5mbmAuWCLAN3iS68HG0J/rFv04AWvkJgGZ4YtLZLI+C4xCTC0JDcbYtLR YV1rhtqFUf+vBWn0wQ0X5B9Y7YlQbv0DWS/dRixKfuU0Zcv1SmGHwFjs0BvLEDCl7hHp peMvJGdyOs4uPk2yCzDRoIvacb1YaxdfYUVlE=
- Reply-to: pygame-users@xxxxxxxx
- Sender: owner-pygame-users@xxxxxxxx
- Thread-index: Aczp6yrwNJqnY0RoTuWkQ5VWVhd/jg==
Hi everyone,
I apologize in advance for posting 43 lines of code, but I can't figure out
where on Earth the trouble is coming from.
When I run this code, the keys do exactly what I'd like, but I'm noticing a
delay of a few tenths of a second between when I press the key and when the
sound of the step is played. Further, sometimes when I tap an arrow key
quickly, the player won't even take a step.
Can anyone please tell me what I'm doing wrong? This looks sound to me.
import time
import pygame
from sound_lib.stream import FileStream
from sound_lib.output import Output
class Player(object):
def __init__(self):
self.x = 10
self.step = FileStream(file="sounds/step.ogg")
self.step.pan = 0
self.step_time = 0.25
self.last_step_time = 0.0
def move(self, dir):
if time.time() - self.last_step_time <= self.step_time:
return
if self.x + dir < 1 or self.x + dir > 20:
return
self.x += dir
if dir > 0:
self.step.pan += 0.1
else:
self.step.pan -= 0.1
self.step.play(True)
self.last_step_time = time.time()
def main():
clock = pygame.time.Clock()
o = Output()
guy = Player()
screen = pygame.display.set_mode((640, 400))
while(True):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
guy.move(-1)
if keys[pygame.K_RIGHT]:
guy.move(1)
for event in pygame.event.get(): pass
clock.tick(5)
if __name__ == '__main__':
main()
Thanks much,
Ryan