#!/usr/bin/perl
use Tk;
use strict;
my $text = 'Hello World !! ';
my $mw = tkinit;
$mw->geometry('+200+200');
$mw->overrideredirect(1);
my $label = $mw->Label(
-textvariable=>\$text,
-font=>'courier',
-bg=>'green',
-bd=>4,
-relief=>'ridge'
)->pack(-fill=>'both');
$label->bind('<ButtonRelease>',sub{$mw->destroy});
# a simple regex that is hard to explain :-) # a clever trick
$mw->repeat(60,[sub{$text=~s/(.)(.*)/$2$1/;}]);
MainLoop;
but here is how you would do my canvas example, and you can adjust spacing and speed as desired. One thing to watch for, is the juggling of the repeat rate, and distance moved. Too fast a repeat rate may cause slow machines to jitter, so slow repeat rate and increase each y move until a smooth flow is attained.
#!/usr/bin/perl
use warnings;
use strict;
use Tk;
my $mw = MainWindow->new();
$mw->geometry($mw->screenwidth . 'x' .
$mw->screenheight );
$mw->title("Scrolling text ----- Click to exit");
my $canvas = $mw->Canvas(
-height => $mw->screenheight,
-width => $mw->screenwidth,
-background => 'black',
-relief => 'raised'
)->pack();
$mw->fontCreate(
"fonta",
-family => 'arial',
-size => -30,
-weight => 'bold'
);
my $adjust;
while (<DATA>){
chomp;
$adjust += 50;
$canvas->createText(50,$mw->screenheight + $adjust,
-text => $_,
-fill =>'hotpink',
-anchor => 'nw',
-font => 'fonta',
-tags => ['mover'],
);
}
$mw->bind( '<ButtonPress-1>', sub { exit; } );
my ($x1,$y1,$x2,$y2) = $canvas->bbox('mover');
my $y2_init = $y2; #save original offset
print "$y2_init\n";
my $id = $mw->repeat(20, \&mover);
MainLoop;
sub mover {
$canvas->move('mover', 0, -1);
my ($x1,$y1,$x2,$y2) = $canvas->bbox('mover');
print "$x1 $y1 $x2 $y2\n";
# reset
if ($y2 < 0){ $canvas->move('mover', 0, $y2_init) }
}
__DATA__
Attack of the Microsith
Not so long ago, in a computer not so far away,
the evil lord of the Microsith, Darth Bill, was
conspiring with the enemies of Open Source Federation
to take complete control over all motherboards in
the known universe.
It was during this monstrous conspiracy, that Prince
Linus had the revelations from the Force, to create
a new electron-manipulation-engine that would be so clean
and powerful, that it would thwart Darth Bill's evil
plans.
In a fortunate turn of fate, a young Jedi named Larry,
came upon a powerful technique of controlling electron-flow
which would free everyone from the dependency on Darth Bill's
polluting technology forever.
Darth Bill became aware of a planned meeting between Prince
Linus and the young Jedi Larry, and assembled his forces led
by the dark lord Daryl, to mount a campaign of harrasment against
the Federation.
Our story begins.............
|