我使用pygame.rect.move有问题吗?

时间:2013-06-15 11:04:49

标签: 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, 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次主菜单按钮类。同样的问题。

1 个答案:

答案 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
相关问题