Python 我使用pygame.rect.move有问题吗?
我正在使用Python 我使用pygame.rect.move有问题吗?,python,python-2.7,pygame,Python,Python 2.7,Pygame,我正在使用pygame.rect.move()在实例化时将按钮移动到特定位置。然后从对象列表中调用存在的blit菜单按钮,并在每个帧中调用所有需要调用的函数。按钮不动了 矩形应该完全适合按钮 我使用的pygame.rect.move()是否不正确 下面是课程: class menuButton(mainMenu): def setpos(self): self.r = self.r.move(self.p) def __init__(self,i,e,s,p, a
pygame.rect.move()
在实例化时将按钮移动到特定位置。然后从对象列表中调用存在的blit菜单按钮,并在每个帧中调用所有需要调用的函数。按钮不动了
矩形应该完全适合按钮
我使用的pygame.rect.move()
是否不正确
下面是课程:
class menuButton(mainMenu):
def setpos(self):
self.r = self.r.move(self.p)
def __init__(self,i,e,s,p, ai, ao,sa):
self.t = "Menu Button"
self.i = pygame.image.load(i)
self.r = self.i.get_rect()
self.e = e
self.ai = ai
self.ao = ao
self.p = p
self.a = 0
self.i.set_alpha(sa)
pygame.transform.scale(self.i,s)
objects.append(self)
print "%s has been instantiated." % (self.t)
def logic(self):
pass
def animations(self):
if self.ai == "FADE_IN":
if(self.i.get_alpha() < 255):
self.i.set_alpha(self.i.get_alpha() + 1)
def update(self):
self.r = self.i.get_rect()
r = True
for obj in objects:
if isinstance(self,type(obj)) == False:
r = False
if r == True:
if self.a == 0:
self.setpos()
print self.r
self.a += 1
self.logic()
self.animations()
screen.blit(self.i,self.r)
pygame.display.flip()
class菜单按钮(主菜单):
def设置位置(自身):
self.r=self.r.move(self.p)
定义初始(自我、即、e、s、p、ai、ao、sa):
self.t=“菜单按钮”
self.i=pygame.image.load(i)
self.r=self.i.get_rect()
self.e=e
self.ai=ai
self.ao=ao
self.p=p
self.a=0
自i.set_α(sa)
pygame.transform.scale(self.i,s)
objects.append(self)
打印“%s”已实例化。“%(self.t)
def逻辑(自):
通过
def动画(自):
如果self.ai==“淡入”:
如果(self.i.get_alpha()<255):
self.i.set_alpha(self.i.get_alpha()+1)
def更新(自我):
self.r=self.i.get_rect()
r=真
对于对象中的obj:
如果isinstance(自身,类型(obj))==False:
r=假
如果r==真:
如果self.a==0:
self.setpos()
打印self.r
self.a+=1
self.logic()
self.animations()
screen.blit(self.i,self.r)
pygame.display.flip()
我没有在图像导入结束时使用.convert(),因为它会破坏图像。我不使用精灵,因为我需要更多的控制。
我还编写了测试程序,看起来很有效,我已经重新编写了主菜单按钮类3次。同样的问题 我没有在图像导入结束时使用.convert(),因为它会破坏图像 以什么方式?你可能想要阿尔法版本 我不使用精灵,因为我想要更多的控制 您可以从
Sprite
派生,然后可以添加任何您想要的内容,但仍然可以使用Sprite.Group
s
名字上的旁注,菜单将包含按钮。但从菜单派生的按钮没有意义
move()
返回已移动的新矩形,move\u ip()
修改现有矩形
或者可以使用rect属性
def setpos(self):
self.r.topleft = self.p
你用这个代码做什么
r = True
for obj in objects:
if isinstance(self,type(obj)) == False:
r = False
if r == True:
if self.a == 0:
self.setpos()
print self.r
self.a += 1
我没有在图像导入结束时使用.convert(),因为它会破坏图像
以什么方式?你可能想要阿尔法版本
我不使用精灵,因为我想要更多的控制
您可以从Sprite
派生,然后可以添加任何您想要的内容,但仍然可以使用Sprite.Group
s
名字上的旁注,菜单将包含按钮。但从菜单派生的按钮没有意义
move()
返回已移动的新矩形,move\u ip()
修改现有矩形
或者可以使用rect属性
def setpos(self):
self.r.topleft = self.p
你用这个代码做什么
r = True
for obj in objects:
if isinstance(self,type(obj)) == False:
r = False
if r == True:
if self.a == 0:
self.setpos()
print self.r
self.a += 1
编辑器工具栏上有一个缩进代码的
{}
按钮。编辑器工具栏上有一个缩进代码的{}
按钮。感谢您使用convert_alpha()。我更喜欢原始控件,因为有一个精灵意味着我拥有的属性比我需要的多或者比我将需要的少。这些按钮从菜单派生出来,不是为了继承任何方法,而是为了在update()方法中显示代码(如果当前存在的对象是该方法的实例)。因此,该按钮是菜单的一个实例,因此r保持不变。我在那件事上走了捷径。底部的代码是一组用于闪电扫描的规则。如果self不是对象的实例,则不渲染。self.a=a。setpos仅仅是实验性的。convert_alpha似乎阻止我改变表面的alpha。另外,移动一个对象并没有解决我的问题。你用这个代码块做什么?您想要整个曲面的每像素alpha还是单个值?还是将单色设置为透明?这是3种不同的模式。我需要将ppa格式化为一个值。默认情况下,如果不进行转换,它似乎可以做到这一点,尽管它实际上并没有做到这一点。当我说格式化为一个值时,每个值都有一个抽象值,从中扣除一个金额,从而从实际alpha本身中扣除。我更喜欢原始控件,因为有一个精灵意味着我拥有的属性比我需要的多或者比我将需要的少。这些按钮从菜单派生出来,不是为了继承任何方法,而是为了在update()方法中显示代码(如果当前存在的对象是该方法的实例)。因此,该按钮是菜单的一个实例,因此r保持不变。我在那件事上走了捷径。底部的代码是一组用于闪电扫描的规则。如果self不是对象的实例,则不渲染。self.a=a。setpos仅仅是实验性的。convert_alpha似乎阻止我改变表面的alpha。另外,移动一个对象并没有解决我的问题。你用这个代码块做什么?您想要整个曲面的每像素alpha还是单个值?还是将单色设置为透明?这是3种不同的模式。我需要将ppa格式化为一个值。默认情况下,如果不进行转换,它似乎可以做到这一点,尽管它实际上并没有做到这一点。当我说格式化成一个值时,每个值都有一个抽象值,从中扣除一个量,从而从实际的alpha本身中扣除。