我正在使用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()
我在图片导入结束时没有使用.convert(),因为它会破坏图像 我没有使用精灵,因为我想要更多控制 我也写了测试程序,它似乎已经工作了,我已经重新编写了3次主菜单按钮类。同样的问题。
答案 0 :(得分:1)
在图片导入结束时不使用.convert(),因为它会破坏图像。
以什么方式?您可能想要alpha版本http://www.pygame.org/docs/ref/surface.html#pygame.Surface.convert_alpha
我没有使用精灵,因为我想要更多控制。
您可以从Sprite
派生,然后您可以添加任何内容,但仍然使用sprite.Group
s
关于名称的旁注,菜单将包含按钮。但是从菜单中获得的按钮没有意义。
move()
返回已移动的新矩形,move_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