首页 > 解决方案 > 如何解决 pygame 中不透明度更改的 OOP 问题

问题描述

我正在尝试将 pygame 的组成部分变成它自己独立的类/定义。但是当尝试设置图像的不透明度时,它不会显示为例外,而是从设置的不透明度开始并变亮,直到达到可能的最大不透明度。

我试图查看包含游戏的模块和包含类的模块中的不透明度是否发生了变化。然而他们最终给了我正确的数字,应该是为不透明度设置的数字。是的,我一直在寻找任何可能会错误地开始增加不透明度的东西。

这是我用来编辑图像的一段代码。

class PicEditor:

    def scale(Pic,scaleX,scaleY):
        Pic.blit = pygame.transform.scale(Pic.blit,(scaleX,scaleY))

    def opacity(Pic,opc):
        Pic.blit.set_alpha(opc)
        print(opc) #attempt at figuring out the problem

这是我试图运行的代码。

while not crashed:
    display.gameLoopTop() #the usual game loop used ontop in pygame
    PicEditor.opacity(templatePic,opacityTemplate) #the issue
    PicEditor.scale(templatePic,displayX,displayY) #scaling an image (works fine)
    templatePic.blitIMG() #bliting the image
    display.gameLoopBottom() #the bottom of a game loop which includes the clock function and pygame display update
pygame.quit()
exit()

预期的结果是图像的不透明度将改变 50 (opacityTemplate = 50),然后图像将适合屏幕的大小 (displayX,displayY),然后是 blited。

一切运行完美,除了图像的不透明度从给定的数字 50 开始,然后再增加 50,直到达到最大不透明度而不会崩溃。

标签: python-3.xooppygamepygame-surface

解决方案


推荐阅读