 
   transition: (newState) ->
     return if newState == I.activeAnimation.name
-    return unless I.activeAnimation.interruptible
+    unless I.activeAnimation.interruptible
+      warn "Cannot transition to '#{newState}' because '#{I.activeAnimation.name}' is locked" if I.debugAnimation
+      return
 
     nextState = find(newState)
 

      I.data.tileset.each (spriteData, i) ->
        I.spriteLookup[i] = Sprite.fromURL(spriteData.src)  
  else
    throw "No animation data provided. Either use animationName to specify an animation to load from the project or pass in raw JSON to the data key."

  advanceFrame = ->
    frames = I.activeAnimation.frames

      I.currentFrameIndex = firstFrame
      I.width = firstSprite.width
      I.height = firstSprite.height 
    else
      warn "Could not find animation state '#{newState}'. The current transition will be ignored" if I.debugAnimation

  transform: -> I.transform

  before:  
    update: ->       
      if I.useTimer
        time = new Date().getTime()

        if updateFrame = (time - I.lastUpdate) >= I.activeAnimation.speed
          I.lastUpdate = time
          if I.activeAnimation.triggers?[I.currentFrameIndex]
            I.activeAnimation.triggers[I.currentFrameIndex].each (event) ->
              self.trigger(event)

          advanceFrame()
      else
        if I.activeAnimation.triggers?[I.currentFrameIndex]
          I.activeAnimation.triggers[I.currentFrameIndex].each (event) ->
            self.trigger(event)

