The problem is that at each iteration of the loop you reset the y-position of the bullet by writing laserFired = spriteY;
However, once this is fixed, you will encounter another problem: the while loop, which moves the laser bullet, runs only in the laserFire method. It means that:
As the laser bullet moves, nothing else can move (because the loop only moves the laser)
As soon as the laser bullet stops moving, it will no longer start moving (because you cannot return to the loop without calling laserFire() again.
You should have one game loop that moves everything in your game, instead of having one cycle for each moving object.
Victor nicollet
source share