?
zh en
20px - +
wrap
cursor
>
<
..
发信人: seaboy (要从太阳上取金子的化学家), 信区: ANSI 标 题: ASCII入门教程(五)——动画延时① 发信站: 日月光华 (2003年04月02日19:34:27 星期三), 站内信件 这一篇我们来说说动画和延时,首先要说明的一点就是动画延时效果并不是所有 telnet软件都支持的,只有cterm和1.266版或更高版本的sterm才支持动画效果, 这些富于动态的画面其实制作原理是很简单的,他们之所以会动就是因为一个函 数,延时函数——*[nM *[nM,其中n代表任意自然数,但是最好不要太大(我也没有实验过上限是多少) 因为平时延时的话最多*[300M就足够用了,数字再大的话时间就太长了,影响阅 读,这个函数的作用就是使其后面的内容延迟一段时间再显示出来,延迟时间的 长短就是由n所填的数字来确定的,数字越大,时间越长。搞清楚这个函数的作用 和用法我们再结合上一篇文章中所介绍的移位控制符,就能做出各种各样的动态 效果了。 例如我们要做一个小球滚动的动态效果,那么我们可以写出如下的代码 ● *[30M*[A ● *[30M*[A ● *[30M*[A ● 这是一个很简单的动态效果,首先在第一行画一个●,然后在第二行开始使用一个 延时函数(这里*[nM中n取了30为例)也就是说后面的“*[A ●”以及下面的两行 要延迟一下才显示,所以显示出第一行的●之时,第二、三、四行由于第二行开头 延时函数的作用,并没有同一时间都显示出来,等到第二行开头的那个延时函数时 间够了之后,第二行的“*[A ●”就显示了出来,由于*[A这个移位函数表示向上 移动一行,所以显示出来的图象就是在第一行显示“ ●”其中●前面的空格正好 覆盖掉第一行的●,于是此时这个●看起来就好像向前移动了一格,在显示出第二 行内容的同时,由于第三行开头延时函数的作用,第三、四行的内容此时还未显示 出,等到第三行延时函数时间够了之后,第三行内容显示出来是“*[A ●”, 同样*[A是表示向上移动一行,所以“ ●”将覆盖掉“ ●”,显示出来的就是 “ ●”其中的空格正好遮住“ ●”此时●看起来又前进了一格,以此类推, 第四行的显示效果使得●看起来又移动了一格,整个过程连冠起来看,就会产生这 个●向前滚动的效果了。 总得来说,其实和动画片的道理是一样的,以上面那个滚动小球的例子来讲,其实 可以把这四行看作是四幅画,我们利用延时函数,将这四幅画一幅幅的依次放出来, 每一副画正好将前一副画完全遮住,而且又略有变化,于是我们将四幅画连贯起来 迅速观看就会觉得小球在向前滚动,这就是动画效果的原理所在,关键就在于如何 设置延时函数*[nM,和如何利用各种移位控制符将需要变化的部分依次移过去覆盖 掉上一步的图案,明白了这个道理,你自己就可以亲自去尝试一下制作一个动画效 果了,首先设计出动画各步骤的图案,然后就看你移位控制技术如何了,呵呵。 -- ╭╮ │ ◣ ╰╮ ┃╭┓╭╮┣╮╭┓┳╭ ╰╯┣╯╰┻╰╯╰╯╰┫ ╰╯ ╰╯ ※ 来源:·日月光华 bbs.fudan.edu.cn·[FROM: 10.100.107.130]