王朝网络
分享
 
 
 

Perl/TkFAQ-18.3.如何用after来实现动画效果?

王朝perl·作者佚名  2008-05-18
宽屏版  字体: |||超大  

原文:

18.3. How can I do animations using after?

There is a "toggling button" demo script supplied with Tk called after_demo that makes effective use of after().

Terry Greenlaw mailto:terry@encompass.is.net of Encompass Technologies posted a character cell animator for the really bored. Here it is in a slightly modified form that allows string input from the command line (note too the recursive call that doesn't sop up system memory): #!/usr/bin/perl=head1 NAMEFrom: z50816@mip.lasc.lockheed.com "Terry Greenlaw" Thu Feb 1 12:02:24 EST 1996To: ptk@guest.WPI.EDUSubj: A code sample for the REALLY boredFor everyone with a case of Browser envy after using Microsoft's InternetExplorer, here's a perl/tk script only slightly more useful than a scriptto do <BLINK>. Don't know why I wrote it. Don't know why you'd run it.Maybe if you were writing a ticker tape application. Or had a weird thingfor Times Square. Anyway....togTerry Greenlaw (on-site @ Lockheed Martin) Encompass Technologiesz50816@mip.lasc.lockheed.com terry@encompass.is.net##################################################################=cut #!/usr/bin/perl #use strict; use Tk; $message=join(' ',@ARGV,''); if (!$message) { $message="THIS IS A VERY LONG SCROLLING MESSAGE... "; $topmssg="This is the top of the screen"; $botmssg="This is the bottom of the screen"; } else { $topmssg=$message; $botmssg=$message; } $top = MainWindow->new; $l1 = $top->Label(-fg => 'White', -text => $topmssg); $l1->pack(-fill => 'both', -expand => 1 ); $m1 = $top->Label(-fg=>'Red', -bg=>'black', -textvariable => \$message, -width => 15 ); $m1->pack(); $m2 = $top->Label(-wrap=>1, -fg=>'Green', -bg=>'black', -textvariable => \$message2, -width=>1, -height=>8 ); $m2->pack(-anchor=>'w'); $l2 = $top->Label(-fg => 'White', -text => $botmssg); $l2->pack(-fill => 'both', -expand => 1 ); after(100, \&scroll_it); $top->MainLoop; sub scroll_it { $message =~ /(.)(.*)/; $message="$2$1"; ($message2 = $message) =~ s/ / /g; after(100, \&scroll_it); } __END__

(Please note that a script like this is now distributed as "TickerTape" in your Tk*/Contrib/ directory.)

译文:

18.3. 如何用after来实现动画效果?

(译者注:原文提到的一个演示脚本after_demo现在好像已经没有了,不过我在自己系统的Tk安装目录里看到了一个名为after.htm的超文本,是专门介绍after和相关函数的用法的,也许对大家有用。)

为了这个确实很烦人的问题,Encompass Technologies(公司?)的Terry Greenlaw贴出了一个小的实现动画的例子。这里有一个稍加改动的版本,以允许从命令行输入字符串。(注意,这里的递归调用不会消耗系统内存的)

#!/usr/bin/perl

=head1 NAME

From: z50816@mip.lasc.lockheed.com "Terry Greenlaw" Thu Feb 1 12:02:24 EST 1996

To: ptk@guest.WPI.EDU

Subj: A code sample for the REALLY bored

对于所有使用浏览器并且忌妒微软的IE中的闪烁功能的人,这里的Perl/Tk脚本实现了<BLINK>的功能。我自己也不知道为什么要写这个脚本,我也不知道你为什么要运行它。也许你正在写一个类似自动滚动的应用程序,或者其它什么……

tog

Terry Greenlaw (on-site @ Lockheed Martin) Encompass Technologies

z50816@mip.lasc.lockheed.com terry@encompass.is.net

##################################################################

=cut

#!/usr/bin/perl

#use strict;

use Tk;

$message=join(' ',@ARGV,'');

if (!$message) {

$message="THIS IS A VERY LONG SCROLLING MESSAGE... ";

$topmssg="This is the top of the screen";

$botmssg="This is the bottom of the screen";

}

else {

$topmssg=$message;

$botmssg=$message;

}

$top = MainWindow->new;

$l1 = $top->Label(-fg => 'White', -text => $topmssg);

$l1->pack(-fill => 'both', -expand => 1 );

$m1 = $top->Label(-fg=>'Red', -bg=>'black',

-textvariable => \$message,

-width => 15

);

$m1->pack();

$m2 = $top->Label(-wrap=>1,

-fg=>'Green', -bg=>'black',

-textvariable => \$message2,

-width=>1, -height=>8

);

$m2->pack(-anchor=>'w');

$l2 = $top->Label(-fg => 'White', -text => $botmssg);

$l2->pack(-fill => 'both', -expand => 1 );

$top->after(100, \&scroll_it);

$top->MainLoop;

sub scroll_it {

$message =~ /(.)(.*)/;

$message="$2$1";

($message2 = $message) =~ s/ / /g; #(译者注:我不明白这个替换的目的是什么?)

$top->after(100, \&scroll_it);

}

__END__

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有