I downloaded your game and gave it a run.
So, when the 'man' collides with the box-border on the right, the movement that follows (man starts to move towards bottom) indicates two things:
1) x movement stops, because gravity and the pushback caused by the horizontal border collision code cancel each other out.
2) y movement starts, AS IF the pushback from the vertical border collision code is giving the man a +y movement.
I'm guessing (2) happens again and again because with (1), the collision is triggered over and over each frame.
This is based on the assumption that during the demo action:
(a) you NEVER change the gravity
(b) the only things which move the man are gravity and the pushback when colliding with a wall.
I also observe that the movement, upon collision, is either up or down based on whether the man collides with the right wall above or below its midpoint, which adds to the evidence that the vertical movement is caused by the repeatedly triggered y-checks.
Looking at your "intersection" test: you seem to be using the same test for xIntersects and yIntersects:
1
| game.man.getBounds().intersects(game.level1.getBounds(i)); |
The only way you might not be getting BOTH an x & y intersect = true each time would be if there were two lists of "bounding rectangles" -- one that can only result from a vertical and one that can only result a horizontal collision, and the segregated collision tests only test for intersection with the appropriate list of boundary boxes.
Hope this analysis helps.