当我使用pygame混音器在主游戏循环中运行声音时,声音会在每个循环之间延迟和中断,我如何解决这个问题?

2024-10-01 19:21:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经把time.sleep(int(这里的任何数字))函数放在我的动画的主游戏循环中,这导致循环重复的速度变慢。由于这一点,我用pygame混音器播放的声音,中断和延迟。它基本上会播放一部分声音一段时间,然后默默地完成其余的代码,然后重新启动。 有没有一种方法可以让我绕过破碎的声音效果?我可以使用不同的声音模块吗

这是我的密码

    import pygame
from pygame import mixer
import time
pygame.init()
pygame.mixer.init()

screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
Part = 1

frameno = 1
orgp = 1
PC = 0
PV = 0
SS = 1
FrameX = 190
FrameY = 0
FrameXS = 1000
FrameYS = 760
ec = 0


def frameset(xs, ys, x, y, no, img, duration):
    if no == frameno:
        frameinit = pygame.image.load(img)
        frameimg = pygame.transform.scale(frameinit, (xs, ys))
        screen.blit(frameimg, (x, y))
        time.sleep(int(duration))
        pygame.display.update()

start = time.process_time()

running = True
while running:

    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                running = False

    screen.fill((0, 0, 0))

    frameinit = pygame.image.load("2565 Thorana Intro.png")
    frameimg = pygame.transform.scale(frameinit, (1000, 760))
    screen.blit(frameimg, (210, 0))

    pygame.display.update()

    if (time.process_time() - start) > 5:
        running = False

running = True
while running:

    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                ec = 1

    if ec == 1:
        running = False

    pygame.mixer.quit()

    if Part == 1:
        pygame.mixer.init()
        audio1 = mixer.Sound("Vesak_2565_playlist.wav")
        audio1.play()

    if Part == 2:
        pygame.mixer.init()
        audio2 = mixer.Sound("2565 Vesak Thorana P01.wav")
        audio2.play()

    if Part == 3:
        pygame.mixer.init()
        audio3 = mixer.Sound("2565 Vesak Thorana P02.wav")
        audio3.play()

    if Part == 4:
        pygame.mixer.init()
        audio4 = mixer.Sound("2565 Vesak Thorana P03.wav")
        audio4.play()

    if Part == 5:
        pygame.mixer.init()
        audio5 = mixer.Sound("2565 Vesak Thorana P04.wav")
        audio5.play()

    if Part == 6:
        pygame.mixer.init()
        audio6 = mixer.Sound("2565 Vesak Thorana P05.wav")
        audio6.play()

    if Part == 7:
        pygame.mixer.init()
        audio7 = mixer.Sound("2565 Vesak Thorana P06.wav")
        audio7.play()

    start = time.process_time()
    frameno = 0
    orgp = Part

        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    ec = 1
                if event.key == pygame.K_RIGHT:
                    PV = 1
                if event.key == pygame.K_LEFT:
                    PV = -1
            if event.type == pygame.KEYUP:
                if event.type == pygame.K_RIGHT or event.type == pygame.K_LEFT:
                    PV = 0

        screen.fill((0, 0, 0))

        Part += PV
        PV = 0
        if Part > 7:
            Part = 1
        if Part < 1:
            Part = 7

        frameno += 1
        if frameno == 89:
            frameno = 1

        if Part == 7:
            FrameX = -800
            FrameY = -1100
            FrameXS = 2500
            FrameYS = 2100
            if (time.process_time() - start) > 14:
                Part = 8
                orgp = Part - 1

        if Part == 6:
            FrameX = -800
            FrameY = -750
            FrameXS = 2500
            FrameYS = 2100
            if (time.process_time() - start) > 16:
                Part = 7
                orgp = Part - 1

        if Part == 5:
            FrameX = -900
            FrameY = -300
            FrameXS = 2500
            FrameYS = 2100
            if (time.process_time() - start) > 28:
                Part = 6
                orgp = Part-1

        if Part == 4:
            FrameX = -200
            FrameY = -300
            FrameXS = 2500
            FrameYS = 2100
            if (time.process_time() - start) > 25:
                Part = 5
                orgp = Part-1

        if Part == 3:
            FrameX = -250
            FrameY = -700
            FrameXS = 2500
            FrameYS = 2100
            if (time.process_time() - start) > 20:
                Part = 4
                orgp = Part-1

        if Part == 2:
            FrameX = -350
            FrameY = -1100
            FrameXS = 2500
            FrameYS = 2100
            if (time.process_time() - start) > 20:
                Part = 3
                orgp = Part-1

        if Part == 1:
            FrameX = 190
            FrameY = 0
            FrameXS = 1000
            FrameYS = 760
            if (time.process_time() - start) > 124:
                Part = 2
                orgp = Part-1

        if Part == 8:
            Part = 1
            orgp = 8

        frameset(FrameXS, FrameYS, FrameX, FrameY, 1, "2565 Thorana F00.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 2, "2565 Thorana F01.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 3, "2565 Thorana F02.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 4, "2565 Thorana F03.png", 0.9)
        frame_loop = 5
        for i in range(int(6)):
            frameset(FrameXS, FrameYS, FrameX, FrameY, frame_loop, "2565 Thorana F02.png", 0.7)
            frameset(FrameXS, FrameYS, FrameX, FrameY, frame_loop + 1, "2565 Thorana F03.png", 0.7)
            frame_loop += 2
        frameset(FrameXS, FrameYS, FrameX, FrameY, 17, "2565 Thorana F02.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 18, "2565 Thorana F03.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 19, "2565 Thorana F04.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 20, "2565 Thorana F05.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 21, "2565 Thorana F06.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 22, "2565 Thorana F07.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 23, "2565 Thorana F08.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 24, "2565 Thorana F09.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 25, "2565 Thorana F10.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 26, "2565 Thorana F11.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 27, "2565 Thorana F11.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 28, "2565 Thorana F10.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 29, "2565 Thorana F09.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 30, "2565 Thorana F08.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 31, "2565 Thorana F07.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 32, "2565 Thorana F06.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 33, "2565 Thorana F05.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 34, "2565 Thorana F04.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 35, "2565 Thorana F03.png", 0.8)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 36, "2565 Thorana F02.png", 0.8)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 37, "2565 Thorana F00.png", 0.8)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 38, "2565 Thorana F01.png", 0.9)
        frame_loop = 39
        for i in range(int(6)):
            frameset(FrameXS, FrameYS, FrameX, FrameY, frame_loop, "2565 Thorana F00.png", 0.7)
            frameset(FrameXS, FrameYS, FrameX, FrameY, frame_loop + 1, "2565 Thorana F01.png", 0.7)
        frame_loop += 2
        frameset(FrameXS, FrameYS, FrameX, FrameY, 51, "2565 Thorana F00.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 52, "2565 Thorana F01.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 53, "2565 Thorana F00.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 54, "2565 Thorana F01.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 55, "2565 Thorana F00.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 56, "2565 Thorana F01.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 57, "2565 Thorana F00.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 58, "2565 Thorana F01.png", 0.7)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 59, "2565 Thorana F00.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 60, "2565 Thorana F01.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 61, "2565 Thorana F04.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 62, "2565 Thorana F05.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 63, "2565 Thorana F06.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 64, "2565 Thorana F07.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 65, "2565 Thorana F08.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 66, "2565 Thorana F09.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 67, "2565 Thorana F10.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 68, "2565 Thorana F11.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 69, "2565 Thorana F11.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 70, "2565 Thorana F10.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 71, "2565 Thorana F09.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 72, "2565 Thorana F08.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 73, "2565 Thorana F07.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 74, "2565 Thorana F06.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 75, "2565 Thorana F05.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 76, "2565 Thorana F04.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 77, "2565 Thorana F00.png", 0.9)
        frameset(FrameXS, FrameYS, FrameX, FrameY, 89, "2565 Thorana F01.png", 0.9)

        if ec == 1:
            orgp = Part-1
                        

我希望问题很清楚

非常感谢你的回答

*请注意,我上个月才开始使用python,昨天就创建了堆栈溢出帐户,所以我的代码不是最好的(在撰写本文时)


Tags: eventiftimepngpygamestartpartmixer

热门问题