10. 延时控制

来源:互联网 发布:mac炉石传说 编辑:程序博客网 时间:2024/06/08 08:01
  本是cterm2000自定义的一个控制符,*[nM,n是个正整数,表示延迟的毫秒数,

   例如

   *[40M日*[40M月*[40M光*[40M华

   就是等待40毫秒,显示"日",再等40毫秒,显示"月",又过了40毫秒,"光"字出现,
再过40毫秒,最后的"华"字也显示出来了,在直到屏幕上最后一个延时控制处理完之前,
不响应用户的操作,显示完后才逐个执行,如果某些文字设为了闪烁,在延时结束之前,
也是不会有闪烁效果的

   本来只有cterm支持延时控制,高版本的sterm也提供了支持。

   这个控制符问题有两个很严重的问题:

   一是fterm对该控制符解释大不相同,fterm里面*[nM是删除光标所在位置起的n行,
因此看出来效果也就大不相同。如果是在qmd里面使用延时的人要注意,千万不要在用定
位将光标移动到前面去的条件下使用*[M,例如定位到第一行覆盖昵称而且做一个带有延
时的昵称,这会对fterm的用户造成很大的影响,在第1行的地方开始删除n行的内容,会
把正文删掉的。 因此用延时,要考虑到fterm下的效果,每次*[M都应该保证不会删掉有
用内容。 假如非要做延时昵称这种,那么注意每次先定位到屏幕底端再用延时然后再跳
回来(尽量用光标定位),如:*[23H*[40M*[1;19H

   二是长时间的延时影响别人正常浏览,要注意的是*[1M并不是延时1毫秒,系统有个
响应时间,实际延时远大于1毫秒,所以如果*[M用得过多,哪怕延时的数值加起来总和
不算太大,但实际的延时仍旧会较长,导致别人无法忍受。
   cterm2000中,编辑>>系统设置>>高级,可以限制延时的最大长度,一屏内延时总长
达到该值时忽略其后的延时控制,但是它是加数值的,而不是根据实际的延时时间
   高版本sterm,不能限制延时最大长度,但系统设置中可以关闭对延时的支持

   某些BBS的精华区可能会看见一种延时的说法是定位到屏幕底端删除大量的行,是针
对fterm用的这套控制符提出的,但是这个方法不可取,首先是可能看不出延时效果,更
严重的是对cterm等的用户来说,你删除1000行(*[1000M)对他来说就是等待1秒钟,太漫
长了...

   一般来说,用不着用户按什么键就有动态效果的都是用延时做的,不过有一种效果
例外,那就是所谓的跑马灯效果,感觉是运动的图像,实际用的是闪烁,如下

   
                 
时的昵称,这会对fterm的用户造成很大的影响,在第1行的地方开始删除n行的内容,会
把正文删掉的。 因此用延时,要考虑到fterm下的效果,每次*[M都应该保证不会删掉有
用内容。 假如非要做延时昵称这种,那么注意每次先定位到屏幕底端再用延时然后再跳
回来(尽量用光标定位),如:*[23H*[40M*[1;19H

   二是长时间的延时影响别人正常浏览,要注意的是*[1M并不是延时1毫秒,系统有个
响应时间,实际延时远大于1毫秒,所以如果*[M用得过多,哪怕延时的数值加起来总和
不算太大,但实际的延时仍旧会较长,导致别人无法忍受。
   cterm2000中,编辑>>系统设置>>高级,可以限制延时的最大长度,一屏内延时总长
达到该值时忽略其后的延时控制,但是它是加数值的,而不是根据实际的延时时间
   高版本sterm,不能限制延时最大长度,但系统设置中可以关闭对延时的支持

   某些BBS的精华区可能会看见一种延时的说法是定位到屏幕底端删除大量的行,是针
对fterm用的这套控制符提出的,但是这个方法不可取,首先是可能看不出延时效果,更
严重的是对cterm等的用户来说,你删除1000行(*[1000M)对他来说就是等待1秒钟,太漫
长了...

   一般来说,用不着用户按什么键就有动态效果的都是用延时做的,不过有一种效果
例外,那就是所谓的跑马灯效果,感觉是运动的图像,实际用的是闪烁,如下

   
                 
     这不是延时  
                 
   

   这种效果是通过相邻两个全方块字符(█)使用相反的前背景色加上闪烁效果做成的

   如*[0;5;31;42m█*[32;41m█*[m效果就是:█
原创粉丝点击