Version 0 of Animations on a Canvas

Updated 2005-05-01 16:18:13

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