我一直在制作口袋妖怪式游戏一个月左右,最近才更新到Mojave,以查看新功能。
更新后,我注意到了我的游戏中的一些小问题,其中一个具体问题是HP Bar,它没有像High Sierra那样绘制。在逐渐减少宽度之前,但是现在程序只是冻结动画播放的时间,然后跳到动画结尾。为什么会发生这种情况?
到目前为止,我知道Pygame的Mojave出现了问题(据说是由于新的黑暗模式造成的),但是我还没有看到有人描述这种情况,其中只有一小部分是他们的。程序已受到影响-大多数报告来自18年,并且抱怨完全缺乏绘图功能。
无论如何,这是我的HP Bar动画代码:
def changeHP(barPos, maxHP, startHP, dif): #This function displays the animation for hp loss/gain
timer = pygame.time.Clock()
for i in range(int(dif*100/maxHP)):
difPer = (maxHP*i/100)
if startHP - difPer <= maxHP/5:
color = Color(255, 0, 0, 255)
elif startHP - difPer <= maxHP/2:
color = Color(255, 255, 0, 255)
else:
color = Color(0, 255, 0, 255)
pygame.draw.rect(screen, Color(255, 255, 255, 255), (barPos[0], barPos[1], 144, 9))
pygame.draw.rect(screen, color, (barPos[0], barPos[1], ((startHP - difPer)/maxHP) * 144, 9))
pygame.display.update()
timer.tick(60)
很抱歉,如果其中一些值看起来很复杂,那就是正在进行的工作。
答案 0 :(得分:0)
嗯,我认为这实际上没有用,但确实可以。
我在循环中添加了事件队列检查,一切恢复正常。
这是我更新的代码:
def changeHP(barPos, maxHP, startHP, dif): #This function displays the animation for hp loss/gain
timer = pygame.time.Clock()
for i in range(int(dif*100/maxHP)):
difPer = (maxHP*i/100)
if startHP - difPer <= maxHP/5:
color = Color(255, 0, 0, 255)
elif startHP - difPer <= maxHP/2:
color = Color(255, 255, 0, 255)
else:
color = Color(0, 255, 0, 255)
pygame.draw.rect(screen, Color(255, 255, 255, 255), (barPos[0], barPos[1], 144, 9))
pygame.draw.rect(screen, color, (barPos[0], barPos[1], ((startHP - difPer)/maxHP) * 144, 9))
pygame.display.update()
timer.tick(60)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()