No. Trying the Socratic method to get him to think about his own code...
This would be simpler if the touch code and laser update code were their own functions, as they are completely independent. The fact that he shares a direction variable name is what is confusing him.
The touch code creates a laser. The laser created is spawned, and the code that sets the rotation and initial offset.
The code that moves the lasers is completely separate (one needn't have touch code at all to move laser objects). Lasers move even when buttons are not touched. So, how can you figure out what direction a given laser should travel?