使用Python位运算符&检测Pygame Surface标志未得到预期结果的问题求助
Python位运算符&检测Pygame Surface标志未得到预期结果的问题求助
我在用Pygame写游戏时,尝试用异或(^)位运算符来切换传入函数的标志,但总是遇到溢出错误(还有Warning: re-creating window in toggle_fullscreen action()错误)。
为了调试,我尝试用&运算符检查标志是否被正确检测,并和Pygame提供的常量值对比:
print(pygame.display.get_surface().get_flags() & exampleflag, exampleflag)
测试pygame.NOFRAME时是正常的:非无边框模式下输出0 32,无边框模式下输出32 32。
但检测始终启用的pygame.SCALED时,却总是输出0 512——明明这个标志是生效的,我预期应该是512 512。
另外检测pygame.FULLSCREEN时(我用pygame.display.toggle_fullscreen()来切换全屏,不知道这点有没有帮助),结果是0 -2147483648——当时窗口并未全屏,我预期应该是0 0,这显然不对,可能也是导致溢出错误的原因。
我对Pygame标志的工作原理理解不深,只知道基本位运算符的作用,而且这部分文档也不够详细(甚至用&检测标志还是我在其他问题里发现的)。有没有人能解释下为什么会出现这种情况?
备注:内容来源于stack exchange,提问作者r5ne
相关产品推荐
相关产品推荐

