I was never the golfing sort with respect to coding, but maybe y'all might pick up something of use:
r := RandomReal[{-1, 1}, {7, 2}]; p = q = r; c = 0;
Dynamic[If[(c += .01) == 1, {p, q} = {q, r}]; c -= ?c?;
Graphics[{Hue[#?1,1?], BSplineCurve[#, SplineClosed -> True]} &[{1 - c, c}.{p, q}], PlotRange -> 1]]