I don't see how this is supposed to happen and i can't run this code ATM. But, apart from that, what you shouldn't do is to do a translate in the onKeyDown, because it runs in another thread than the rendering. You'll get all kinds of funny side effects when doing so. Increasing the x/y-positions is fine, but move the actual translation into the moveCharacter method. Maybe this will already fix your problem!?