如何在 Pygame 中为虚线设置动画
How do I animate a dotted line in Pygame
所以我正在尝试为一条沿着屏幕向下移动的虚线制作动画……就像白色虚线在路上从你身边经过一样。我很容易画出虚线:
import pygame
GREY = (211, 211, 211)
WHITE = (255, 255, 255)
pygame.init()
screen = pygame.display.set_mode(800, 600)
pygame.display.set_caption("Line Test")
clock = pygame.time.Clock()
running = True
while running:
clock.tick(60)
for event in pygame.event,get():
if event.type == pygame.QUIT:
running = False
all_sprites.update()
screen.fill(GREY)
dash = 0
for i in range(30):
pygame.draw.line(screen, WHITE, [400, 1 + dash], [400, dash + 10], 6)
dash += 20
all_sprites.draw(screen)
pygame.display.flip()
pygame.quit()
但我正在尝试在 Class 中为该线添加动画效果,因此它看起来一直在向下移动。到目前为止运气不好,只能通过以下方式在屏幕上向下移动一个破折号:
class Line(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((6, 10))
self.image.fill(WHITE)
self.rect = self.image.get_rect()
self.last_uodate = pygame.time.get_ticks()
self.rect.x = 400
dash = 0
for i in range(30):
self.rect.y = 0 + dash
dash += 20
self.speedy = 5
def update(self):
self.rect.y += self.speedy
if self.rect.y > 600:
now = pygame.time.get_ticks()
if now - self.last_update > 0:
self.last_update = now
self.rect.x = 400
self.rect.y = 0
self.speedy = 5
all_sprites = pygame.sprite.Group()
line = pygame.sprite.Group()
for i in range(30):
ln = Line()
all_sprites.add(ln)
line.add(ln)
有什么建议或告诉我哪里做错了吗?这只会产生沿着屏幕向下的单破折号,而不是从上到下不断移动的完整虚线。
由于这个 link 很安静,没有得到我希望的反馈,我在 Pygame 中又玩了一些,最后,只在道路线上使用了 sprite 图像。我能够使用大约 4 个独立的 Class 从屏幕顶部不同的 rect.y 位置开始并让 self.speedy 对它们都相同然后到达时离开屏幕底部,全部从 -20 y 位置重新开始。这使得所有这些都在沿着屏幕向下移动的连续道路线上无缝流动。如果有人想要我使用的代码,我很乐意 post。
我仍然希望有人能告诉我如何在一个 Class 内完成。
所以我正在尝试为一条沿着屏幕向下移动的虚线制作动画……就像白色虚线在路上从你身边经过一样。我很容易画出虚线:
import pygame
GREY = (211, 211, 211)
WHITE = (255, 255, 255)
pygame.init()
screen = pygame.display.set_mode(800, 600)
pygame.display.set_caption("Line Test")
clock = pygame.time.Clock()
running = True
while running:
clock.tick(60)
for event in pygame.event,get():
if event.type == pygame.QUIT:
running = False
all_sprites.update()
screen.fill(GREY)
dash = 0
for i in range(30):
pygame.draw.line(screen, WHITE, [400, 1 + dash], [400, dash + 10], 6)
dash += 20
all_sprites.draw(screen)
pygame.display.flip()
pygame.quit()
但我正在尝试在 Class 中为该线添加动画效果,因此它看起来一直在向下移动。到目前为止运气不好,只能通过以下方式在屏幕上向下移动一个破折号:
class Line(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((6, 10))
self.image.fill(WHITE)
self.rect = self.image.get_rect()
self.last_uodate = pygame.time.get_ticks()
self.rect.x = 400
dash = 0
for i in range(30):
self.rect.y = 0 + dash
dash += 20
self.speedy = 5
def update(self):
self.rect.y += self.speedy
if self.rect.y > 600:
now = pygame.time.get_ticks()
if now - self.last_update > 0:
self.last_update = now
self.rect.x = 400
self.rect.y = 0
self.speedy = 5
all_sprites = pygame.sprite.Group()
line = pygame.sprite.Group()
for i in range(30):
ln = Line()
all_sprites.add(ln)
line.add(ln)
有什么建议或告诉我哪里做错了吗?这只会产生沿着屏幕向下的单破折号,而不是从上到下不断移动的完整虚线。
由于这个 link 很安静,没有得到我希望的反馈,我在 Pygame 中又玩了一些,最后,只在道路线上使用了 sprite 图像。我能够使用大约 4 个独立的 Class 从屏幕顶部不同的 rect.y 位置开始并让 self.speedy 对它们都相同然后到达时离开屏幕底部,全部从 -20 y 位置重新开始。这使得所有这些都在沿着屏幕向下移动的连续道路线上无缝流动。如果有人想要我使用的代码,我很乐意 post。
我仍然希望有人能告诉我如何在一个 Class 内完成。