proc repeat {} { set i [ expr { $::cnt % 15 } ] if {$i > 8} { set i [ expr { 15 - $i } ] } set tag t$i puts $tag .c raise bg .c raise $tag incr ::cnt after $::interval repeat } set ::cnt 0 set ::interval 200 canvas .c -width 20 -height 20 pack .c -expand 1 .c create rect 0 0 20 20 -fill gray .c create oval -5 -5 25 25 -fill gray -tags { bg } .c create oval 0 0 0 0 -fill green -tags {t0 } .c create oval 0 0 5 5 -fill green -tags { t1 } .c create oval 0 0 10 10 -fill green -tags { t2 } .c create oval 0 0 15 15 -fill green -tags { t3 } .c create oval 0 0 20 20 -fill green -tags { t4 } .c create oval 5 5 20 20 -fill green -tags { t5 } .c create oval 10 10 20 20 -fill green -tags { t6 } .c create oval 15 15 20 20 -fill green -tags { t7 } .c create oval 20 20 20 20 -fill green -tags { t8 } .c raise off update after 200 repeat