Seems IsOnFloor doesn't work correctly when the sprite has frames with different sizes. The sprite collides on floor , isOnFloor is true, the next frame it returns false, then true , then false, then true etc...
So it appears IsOnFloor is moving the sprite up and down indefinitelly.
Example: A sprite has an animation with two frames one with 52px height and another with 49px height. When it collides in one frame IsOnFloor returns true than it changes the frame IsOnFloor is false , then true , then false and so on. If i force it to stay on frame 0 for example it works correctly. Hope my description is clear enough