問題が発生していますが、なぜこのようなことが起こるのか、またどのように修正すればよいのかがわかりません。私は Python と pygame を使用してビデオゲームの開発に取り組んでいますが、次のエラーが発生します。
File "/home/matt/Smoking-Games/sg-project00/project00/GameModel.py", line 15, in Update
self.imageDef=self.values[2]
TypeError: 'NoneType' object has no attribute '__getitem__'
コード:
import pygame,components
from pygame.locals import *
class Player(components.Entity):
def __init__(self,images):
components.Entity.__init__(self,images)
self.values=[]
def Update(self,events,background):
move=components.MoveFunctions()
self.values=move.CompleteMove(events)
self.imageDef=self.values[2]
self.isMoving=self.values[3]
def Animation(self,time):
if(self.isMoving and time==1):
self.pos+=1
if (self.pos>(len(self.anim[self.imageDef])-1)):
self.pos=0
self.image=self.anim[self.imageDef][self.pos]
このエラーが何を意味し、なぜ発生するのかを説明して修正できるようにしていただけますか?
ベストアンサー1
BrenBarn さんは正しいです。このエラーは、 のようなことをしようとしたことを意味しますNone[5]
。バックトレースでは と表示されていますself.imageDef=self.values[2]
。つまり、 はself.values
ですNone
。
更新されるすべての関数を調べてself.values
、すべてのコーナーケースを考慮していることを確認する必要があります。