@Earl Do you mean a custom coloring by procedures, as available for the plot3d command? That uses the resulting cartesian x,y,z values of the points, rather than any values directly from the parametrization.
Here is an example where such custom coloring procedures are used to generate a color Array (insides a COLOR plotting substructure), which is then used as a replacement in the 2D circle frames.
N := 45:
g := 101:
P3:=plot3d([ cos(a), sin(a), 0],
a = -Pi .. Pi,
s = 0..1,
grid = [g,2],
colorscheme = ["xyzcoloring",
f := proc(NN,t,C)
gg := `*`(op(map(u->op(2,u)-op(1,u)+1,
shift := - Pi/2 - t/(NN-1)*2*Pi;
P2 := plot([t + NN/10*(1 + cos(a)), NN/10*(1 + sin(a)),
a = 0 + shift .. 2*Pi +shift],
adaptive = false, numpoints = gg,
thickness = 4):
plots:-display([seq(f(N,t,C), t = 0..N)],
scaling = constrained, size = [700,500],
gridlines = false, insequence = true);
Above you could use ImageTools:-Embed(op(,C)); to see the colors in C.
The final circle frames are constructed with g*2 data points, since P3 is built with grid=[g,2]. This makes the numbers of color points represented by C match the number of points in each circle.
I don't think that there is an easy way to directly generate the 2D circle frames, using parametric form and custom coloring procedures (admitting the parameter values). By this I mean, a straightforward way, without having to construct the PLOT structure even more manually instead of via nice plotting commands.