If you are using the code from the example, that's because i bound the calculation of the corresponding values to this statement in updateProjector():
if (light != null && projectionMatrix == null) {
...
}
If you comment this statement out, it should update correctly. However, it creates some garbage objects this way in each frame. So it's better to do it in case of a real change in position or direction only.