簡體   English   中英

pygame不會在函數內部變灰嗎?

[英]pygame won't blit inside function?

我有一段代碼在函數外部工作,但不在內部工作。

我還確保必要的變量是全局的。

我可以使用該函數內的chair.get_width()獲得表面的寬度,並且可以正常工作,但是由於某種原因,我無法執行screen.blit(chair, (10,10)) 我沒有錯誤,它什么也沒做...

這是我的腳本(它創建一個窗口,然后每100毫秒調用一次獲取鼠標位置的函數,將圖像旋轉x度,然后將圖像平移(或應平移)到窗口):

    cif = "images/chair3.png"

    import pygame, sys
    from pygame.locals import *

    pygame.init()

    screen = pygame.display.set_mode((640,480),0,32)

    chair = pygame.image.load(cif).convert_alpha()

    pygame.time.set_timer(USEREVENT + 1, 100)

    def cursor(speed):
        global i
        global chair
                    global screen
        x,y = pygame.mouse.get_pos()
        x -= chair.get_width()/2
        y -= chair.get_height()/2

        if i < 360:
            i = i + 360/(1000/speed)
        else:
            i = 0

        orig_chair_rect = chair.get_rect()
        chair1 = pygame.transform.rotate(chair, i);
        rot_chair_rect = orig_chair_rect.copy()
        rot_chair_rect.center = chair1.get_rect().center
        chair1 = chair1.subsurface(rot_chair_rect).copy()

        print chair.get_width()

        screen.blit(chair1,(x,y))

    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            if event.type == USEREVENT + 1:
                cursor(50)

您確實需要使用pygame.display.flip()pygame.display.update() ,否則,屏幕將永遠不會更新,因此您的椅子不會在屏幕上變灰。

試了一下,行得通。 如果它不適合您,請重新安裝Pygame,然后重試。

您需要在函數末尾調用pygame.display.flip() ,否則,圖形就不會從后緩沖區復制到實時顯示中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM