我无法获取我的sprite Ball类来获取KEYDOWN / KEYUP事件的值以从主循环中的“else”语句更新自身。这是主循环和球类的代码:
class Ball():
def __init__(self):
global ball
ball = pygame.sprite.Sprite()
ball.image = pygame.image.load('red_ball.png').convert()
ball.rect = ball.image.get_rect()
ball.image.set_colorkey((white))
def event_handle(self, event):
x,y = 285, 430
m_x, m_y = 0,0
if event.type == KEYDOWN:
if event.key == K_a:
m_x = -4
elif event.key == K_d:
m_x = +4
if event.type == KEYUP:
if event.key == K_a:
m_x = 0
elif event.key == K_d:
m_x = 0
x+= m_x
y+= m_y
if x > 640:
x = 0
if x < 0:
x = 640
def update(self):
screen.blit(ball.image,(x,y))
pygame.display.update()
def main():
m_x, m_y = 0,0
while True:
ball = Ball()
screen.blit(background, (0,0))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
else:
ball.event_handle(event)
ball.update()
pygame.display.update()
答案 0 :(得分:1)
我没有读到lign 1 ...那个球应该继承自sprite.Sprite
正如我在其他地方所说,你应该阅读一些教程。我没有时间找到一个关于精灵的好的,但如果我发现它一次,你也应该能够找到它。祝你好运!
答案 1 :(得分:0)
问题是你有这个:
if key down:
if k=a:
do stuff
if k=s:
do stuff
***if k up:
do stuff***
如果k键在if键之外,你需要移动。现在你说的是,如果密钥已启动,并且密钥已关闭,那么当密钥关闭时,请执行您想要的操作。