You don't want to have controls? How about using timed tasks?
p=0;
t = CreateScheduledTask[p = Mod[p + 0.1, 4, -2], 0.1];
Show[
curv,
Graphics[{Red, PointSize[0.03], Dynamic@Point@{u[p], v[p]}}]
]
StartScheduledTask[t];
Stop it using:
RemoveScheduledTask[t];
Alternatively, you could use Refresh to take care of the timing.
Show[
curv,
Graphics[{Red, PointSize[0.03],
Dynamic[Refresh[p = Mod[p + 0.05, 4, -2]; Point@{u[p], v[p]},
UpdateInterval -> 0.05, TrackedSymbols -> {}]]}]
]
Note the TrackedSymbols -> {} option which prevents the p = Mod[p + 0.05, 4, -2] part from self-triggering another iteration.
It's even easier using Clock:
Show[curv,
Graphics[{Red, PointSize[0.03],
Dynamic[Point@{u[#], v[#]} &@Clock[{-2, 2, .05}, 5]]}]]