2016-05-14 12 views
0
class Powup(pg.sprite.Sprite): 
    def __init__(self,x ,y ,color): 
     pg.sprite.Sprite.__init__(self) 
     self.image = pg.Surface((10,10)) 
     self.image.fill(color) 
     self.rect = self.image.get_rect() 
     self.rect.centerx = x 
     self.rect.centery = y 
     self.vx = 0 
     self.vy = 0 
     self.state = False 
     self.power = 1 
     self.timeout = 5000 
     #self.last_true = pg.time.get_ticks() 




    def update(self): 

     if p.rect.left < self.rect.centerx < p.rect.right and self.rect.bottom >= 560: 
      self.kill() 
      self.last_true = pg.time.get_ticks() 
      self.state = True 
      p.image.fill(red) 

     if (pg.time.get_ticks() - self.last_true) > 5000 : 
      p.image.fill(black) 
      self.state = False 



     self.rect.y += self.vy 

私はプログラムを実行すると場合、それはオブジェクトエラー

を言う(pg.time.get_ticks() - self.last_true)> 5000: はAttributeError: 'Powup' オブジェクトが「何の属性を持っていませんlast_true '

これは意味をなさない。誰かがこれを私に説明してもらえますか?

+0

設定した行のコメントを外しても、 – Roberto

答えて

1

オブジェクトの初期化で「self.last_true = pg.time.get_ticks()」がコメントアウトされています。更新の最初のif文がfalseの場合、2番目のif文でテストするように正しく設定されることはありません。したがって、決して設定していないものの価値をテストしています。

+0

はい私はそれをテストし、私はそれを見た。しかし、最初のif文がTrueのときにpg.time.get_ticks()を起動して何かを提案できますか? – Aris

+0

"self.last_true"が設定される前にそのステートメントが真になるまで待たされて死んでしまった場合は、最初のステートメントが真であるときに反転されたブールトグルの背後に隠れる2番目のifステートメントが必要です。 – oxrock

0

あなたのコメントで他の回答に行くと、このようなことが起こる可能性があります。エラーがある場合は無視してください。

def update(self): 

    if p.rect.left < self.rect.centerx < p.rect.right and self.rect.bottom >= 560: 
     self.kill() 
     self.last_true = pg.time.get_ticks() 
     self.state = True 
     p.image.fill(red) 

    try: 
     if (pg.time.get_ticks() - self.last_true) > 5000 : 
      p.image.fill(black) 
      self.state = False 
    except AttributeError: 
     pass 


    self.rect.y += self.vy 
関連する問題