发信人: allenwu (未注册用户·别理我,烦着呢,滚!!!!), 信区: ANSI
标 题: 10. 延时控制
发信站: 日月光华 (2003年12月14日00:47:57 星期天), 站内信件
本是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秒钟,太漫
长了...
一般来说,用不着用户按什么键就有动态效果的都是用延时做的,不过有一种效果
例外,那就是所谓的跑马灯效果,感觉是运动的图像,实际用的是闪烁,如下
█████████
█ █
█ 这不是延时 █
█ █
█████████
这种效果是通过相邻两个全方块字符(█)使用相反的前背景色加上闪烁效果做成的
如*[0;5;31;42m█*[32;41m█*[m效果就是:██
--
※ 来源:·日月光华 bbs.fudan.edu.cn·[FROM: 10.85.24.241]
Sender: allenwu Unregistered user. Ignore me. I’m annoyed. Get lost. Message area: ANSI
Title: 10. Delay control
Sending site: Sun and Moon Guanghua December 14, 2003 00:47:57 Sunday, site mail
This is a control character customized by cterm2000 *[nM n is a positive integer representing the number of milliseconds of delay
For example
*[40M日*[40M月*[40M光*[40M华
Just wait for 40 milliseconds, "Day" is displayed, wait another 40 milliseconds, "Month" is displayed, and after another 40 milliseconds, the word "Light" appears.
After another 40 milliseconds, the last word "华" is also displayed, before the last delay control on the screen is processed.
Does not respond to user operations. Execute one by one after displaying. If some text is set to flash before the delay ends.
There will be no flickering effect either
Originally, only cterm supported delay control. Higher versions of sterm also provided support.
There are two serious problems with this control character problem:
First, fterm interprets the control character very differently. *[nM in fterm means to delete n lines from the cursor position.
Therefore, it can be seen that the effect is very different. If you are using delay in qmd, please be careful not to use fixed time.
Use *[M to move the cursor to the front. For example, locate the first line to cover the nickname and make a line with extension.
This will have a great impact on fterm users. Delete the content of n lines starting from line 1. It will
The main text is deleted, so when using delay, the effect under fterm must be taken into consideration. Each time *[M should ensure that no text is deleted.
Use content. If you have to make a delayed nickname, then pay attention to positioning to the bottom of the screen each time, then use delay, and then jump.
When you come back, try to use the cursor to position, such as *[23H*[40M*[1;19H
Second, a long delay affects other people's normal browsing. It should be noted that *[1M does not mean a delay of 1 millisecond. The system has
Response time The actual delay is much greater than 1 millisecond, so if *[M is used too much, even if the delay values add up
It’s not too big, but the actual delay will still be long, making it intolerable to others.
In cterm2000, Edit>>System Settings>>Advanced can limit the maximum length of delay and the total length of delay in one screen.
When this value is reached, the subsequent delay control is ignored, but it is an additive value rather than based on the actual delay time.
Higher versions of sterm cannot limit the maximum length of the delay, but support for delays can be turned off in the system settings.
You may see a delay in the essence area of some BBS, which is to move to the bottom of the screen to delete a large number of lines. This is the needle.
This is proposed for the set of control symbols used by fterm. However, this method is not advisable. First of all, the delay effect may not be visible. More
What's serious is that for cterm users, if you delete 1000 lines *[1000M, it means waiting for 1 second, which is too long.
Longer...
Generally speaking, the dynamic effects that do not require the user to press any keys are all done using delay. However, there is an effect.
The exception is the so-called marquee effect. It feels like a moving image, but actually uses flickering, as follows.
This is not a delay
This effect is created by using two adjacent full-block characters with opposite background and background colors plus a flickering effect.
For example, *[0;5;31;42m *[32;41m *[m, the effect is
Source: Sun and Moon Guanghua bbs.fudan.edu.cn [FROM: 10.85.24.241]