i didnt much understand the code
but
i know this
when i was programming in 2D i remmber that
once collision accurd you cant move cause youre stuck
and the If Collision stops you.
what i realized is that
once there is a collision , in order to stop the collision
you must give the Player Sprite or any other sprite that you want it to keep moving , is
+ 1 to the X value or pherhaps a -1 cause youre probably coming from the left , actually , you need to "push" your sprite a bit backwards from the Direction it comes.
now , thats give your sprite \ player \ enemy or whatever entity
the "non collision" , cause you have just pushed it in the opposite direction so the Collision is gone.
i hope this can help
try this , and come back if you have more questions
nadav.