Как сделать петлю "while mouse down" в Pygame - PullRequest
0 голосов
/ 13 февраля 2019

Итак, у меня есть этот код для аэрографа в приложении для рисования.Когда функция активна, она должна рисовать на холсте, в основном, как аэрография.Но сейчас я не знаю, как заставить pygame обнаружить мышь или мышь и сделать из нее цикл while.Вот код:

def airbrush():
    airbrush = True
    cur = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()
    while click == True:
        pygame.draw.circle(gameDisplay, colorChosen, (cur[0] + random.randrange(brushSize), cur[1] + random.randrange(brushSize)), random.randrange(1, 5))
        pygame.display.update()
        clock.tick(60)

Прямо сейчас у меня есть «пока щелчок», который не работает.Чем я должен заменить «щелчок», чтобы эта работа работала так, чтобы при удерживании мыши она рисовала, а когда мышь «вверх», останавливалась?

1 Ответ

0 голосов
/ 13 февраля 2019

Состояние, которое возвращается pygame.mouse.get_pressed(), оценивается один раз при вызове pygame.event.get().Возвращаемое значение pygame.mouse.get_pressed() коррелирует с состояниями кнопок.

Не реализуйте отдельную обработку событий в функции.Выполните обработку событий в основном цикле:

done = False
while not done:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    airbrush()
    pygame.display.flip()

Оцените текущее состояние кнопки (например, левой кнопки) текущего кадра в функции airbrush:

def airbrush():
    airbrush = True
    cur = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()
    if click[0] == True: # evaluate left button
        pygame.draw.circle(gameDisplay, colorChosen, (cur[0] + random.randrange(brushSize), cur[1] + random.randrange(brushSize)), random.randrange(1, 5))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...