title: Pyglet walking animation. Error: 'NoneType' object has no attribute 'draw'
body: <p>This code displays the image <code>assassin1.png</code> on a black background. The idea is that as soon as I press the <code>&lt;right-direction&gt;</code> key the character should move and display an animation using <code>assassin2.png</code> and <code>assassin3.png</code>. I have been able to move the character and display the animation succesfully, just not the two at the same time. </p>
  
  <p>The following code runs as long as I don't press the <code>&lt;right direction&gt;</code> key:</p>
  
  <pre><code>import pyglet
  
  def sprite_type(type_ = "standing"):
      if type_ == "moving-forward":
          moving_forward_image_list = [pyglet.image.load('assassin2.png'), pyglet.image.load('assassin3.png')]
          moving_forward_animation = pyglet.image.Animation.from_image_sequence(moving_forward_image_list, 0.3) 
          return moving_forward_animation
      if type_ == "standing":
          standing_animation = pyglet.image.load("assassin1.png")
          return standing_animation
  
  class Assassin(pyglet.sprite.Sprite):
      def __init__(self, batch, img):
          pyglet.sprite.Sprite.__init__(self, img, x = 50, y = 30)
  
      def stand(self, batch, img):
          self.batch = batch
          self.img = img
  
      def move(self, batch, img):
          self.batch = batch
          self.img = img      
  
  class Game(pyglet.window.Window):
      def __init__(self):
          pyglet.window.Window.__init__(self, width = 315, height = 220)
          self.batch_draw = pyglet.graphics.Batch()
          self.player = Assassin(batch = self.batch_draw, img = sprite_type())
          self.fps_display = pyglet.clock.ClockDisplay()
          self.keys_held = []      
          self.schedule = pyglet.clock.schedule_interval(func = self.update, interval = 1/60.) 
  
      def on_draw(self): 
          self.clear()         
          self.fps_display.draw()
          self.batch_draw.draw()
          self.player.draw()  
  
      def on_key_press(self, symbol, modifiers):
          self.keys_held.append(symbol)
          if symbol == pyglet.window.key.RIGHT:
              self.player = self.player.move(batch = self.batch_draw, img = sprite_type("moving-forward"))
              print "The 'RIGHT' key was pressed"
  
      def on_key_release(self, symbol, modifiers):
          self.keys_held.pop(self.keys_held.index(symbol))
          self.player = self.player.stand(batch = self.batch_draw, img = sprite_type("standing"))
  
      def update(self, interval):
          if pyglet.window.key.RIGHT in self.keys_held:
              self.player.x += 50 * interval
  
  if __name__ == "__main__":
      window = Game()
      pyglet.app.run()
  </code></pre>
  
  <p>As soon as I press the <code>&lt;right-direction&gt;</code> key the following error occurs:</p>
  
  <pre><code>Traceback (most recent call last):
    File "ircex.py", line 55, in &lt;module&gt;
      pyglet.app.run()
    File "/usr/local/lib/python2.7/dist-packages/pyglet/app/__init__.py", line 264, in run
      EventLoop().run()
    File "/usr/local/lib/python2.7/dist-packages/pyglet/app/xlib.py", line 93, in run
      sleep_time = self.idle()
    File "/usr/local/lib/python2.7/dist-packages/pyglet/app/__init__.py", line 193, in idle
      window.dispatch_event('on_draw')
    File "/usr/local/lib/python2.7/dist-packages/pyglet/window/__init__.py", line 1219, in dispatch_event
      EventDispatcher.dispatch_event(self, *args)
    File "/usr/local/lib/python2.7/dist-packages/pyglet/event.py", line 349, in dispatch_event
      return getattr(self, event_type)(*args)
    File "pyglet-walk.py", line 37, in on_draw
      self.player.draw()  
  AttributeError: 'NoneType' object has no attribute 'draw'
  </code></pre>