in reply to Re: Shrinking Pie Analog Countdown Timer
in thread Shrinking Pie Analog Countdown Timer
Stealing liberaly and recoding a little. This does the same thing (mostly) but without all the different slices. This lets you set the angle that you could like to be removed every frame and the timer length. Moved configuration data to the top and thats about it. Mine is probably worse in some ways or better in others, but in reality i was just playing and thought i would share.
#! perl -slw use strict; use warnings; use Time::HiRes qw[ time ]; use Tk::Canvas; my $inc = 1; #degrees to move each frame my $length = 10; #seconds to take my ($width, $height) = (480,480); my $trip_point = 90; my $code = 'A123BC'; my $repeatTime = ($length * 1000) / (360 / $inc); my $mw = MainWindow->new; my $canvas = $mw->Canvas( -width => $width, -height => $height, -bg => 'black', )->pack; my $start = 359; my $arc = $canvas->createArc( 0, 0, $width, $height, -fill => 'white', -outline => undef, -extent => $start, -start => 90, -tag => 'arc', ); ## Bind action to space bar $mw->bind( '<space>', sub { my $rep; my $tripped = 0; ## Set up the repeating callback with the delay calculated earlier $rep = $mw->repeat( $repeatTime, sub { $start -= $inc; $canvas->itemconfigure('arc', -extent => $start ); if ($start < 0) { $canvas->itemconfigure('arc', -extent => 0); $rep->cancel; printf "\a"; $canvas->createText($width / 2, $height /2, -text => $code, -tag => 'code', -fill => 'red', ); } elsif ($start < $trip_point and !$tripped) { printf "\a"; $tripped = 1; $canvas->itemconfigure('arc', -fill => 'red'); } }); }); $mw->MainLoop;
Update: .... errr cut and pasted the wrong file, sorry bout that.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Shrinking Pie Analog Countdown Timer
by BrowserUk (Patriarch) on May 24, 2006 at 19:47 UTC | |
by eric256 (Parson) on May 24, 2006 at 20:00 UTC |