pygame:在屏幕上绘制文本之前绘制文本

问题描述:

已经有很多这些问题了,但我无法弄清楚什么是错的。复杂的问题代码分散在一个类。我正在尝试创建一个滚动面板。这是类插槽,其显示了一些短语,并作为一个链接的列表,以允许生长(希望紧凑的代码)pygame:在屏幕上绘制文本之前绘制文本

代码: 变量:the_game:模块pygame的,字体的实例:模块pygame.font的实例,短语:被推动的字符串,self.bitmap:要绘制到屏幕的槽的表面对象,num:表示槽号的数字,因为它们应该是按顺序排列的。

class slot(object): 
    def __init__(self,x,y,num,dimx,dimy,the_game,font): 
     ... 
     self.wordnum = convertnum(num)+". " 
     self.phrase="" 
     self.bitmap = the_game.Surface((dimx,dimy)) 
     self.updatesprite(the_game,font) 

功能updatesprite清理和重新块传输任何短语插槽应该持有改变时:

def updatesprite(self,the_game,font): 
     self.bitmap.fill((240,240,240)) 
     phrase = self.wordnum 
     if(self.has_phrase==True): 
      phrase+=self.phrase 
     text = font.render(phrase,1,(0,0,255)) 
     the_game.Surface.blit(text,self.bitmap,[self.x+2, self.y+2]) 
    ... 

因为当一个又一个“推送向后移动一个短语或句子到下一时隙“关于先前时隙

def mypush(self,num,phrase,the_game,font): 
     if (num > self.num): 
      if (self.has_next==False): 
       self.addmore(num-self.num,the_game,font) 
      self.next.mypush(num,phrase,the_game,font) 
      self.updatesprite(the_game,font) 
     elif (num == self.num): 
      if (self.has_phrase==True): 
       self.mypush(self.num+1,self.phrase,the_game,font) 
      else: 
       self.has_phrase=True 
      self.phrase=phrase 
      self.updatesprite(the_game,font) 

功能用于设置槽的短语:

def setphrase(self,phrase,realx,realy,virty,realdim,mousex,mousey,the_game,font): 
     ... 
     if (self.has_phrase==True): 
      self.mypush(self.num+1,self.phrase,the_game,font)     
      self.has_phrase=True 
     self.phrase=phrase 
     self.updatesprite(the_game,font) 

,然后绘制到屏幕的方法,包括:

def mydraw(self,the_game,scrn,realx,realy,virty,realdim): 
     ... 
     holder = self.bitmap.subsurface(0,self.e_y-virty,self.dim_x,self.dim_y-(self.e_y-virty)) 
     scrn.blit(holder,[self.x,0]) 
     if(self.has_next==True): 
      self.next.mydraw(the_game,scrn,realx,realy,virty,realdim) 

代码被缩写出是用于确定所述用户上的狭槽点击时,确定屏幕从滚动坐标坐标等

这样写的原因是因为:a)我期望有一个面板可能有相当多的插槽。我想绘制到一个大的位图,并抓住我所需要的不聪明或可扩展。 b)个别插槽可能会被删除

我可以做例子工作,但不是这项工作。我可以看到实际的位图:self.bitmap,被绘制到屏幕但没有字符串。 IDK什么在

去更新updatesprite方法:

def updatesprite(self,the_game,font): 
    self.bitmap.fill((240,240,240)) 
    phrase = self.wordnum 
    if(self.has_phrase==True): 
     phrase+=self.phrase 
    text = font.render(phrase,1,(0,0,255)) 
    **self.bitmap.blit(text,[1, 1])** #compare to original