标题: [特效代码] 批处理怎样实现字体闪烁? [打印本页]
作者: zhnzhouhan 时间: 2007-12-26 14:26 标题: 批处理怎样实现字体闪烁?
@echo off&setlocal enabledelayedexpansion
set str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼
人民不敌人民币
for %%i in (%str%) do (
set char=%%i
echo.
echo.
call :aa %%i&&call :hero %%i
:aa
for /l %%j in (0,1,15) do (
set/p= !char:~%%j,1!<nul
ping -n 1 127.1>nul
)
)
:hero
for /l %%k in (1,1,3) do (
set /p a=%1<nul
ping /n 1 127.1>nul
set /p a=<nul
set /p a= <nul
set /p a=<nul
ping /n 1 127.1>nul
)
goto :eof
pause>nul
以上代码是为了实现让字体逐个显示后,然后再每句闪烁3次!
但是我写的这个代码实现得不是很好!并且在最后一行完成显示后,被覆盖掉了!
还望高手帮忙!
作者: novaa 时间: 2007-12-26 16:14
-
-
- @echo off&setlocal enabledelayedexpansion
- set str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 ^
- 人民不敌人民币
- for %%i in (%str%) do (
- set List=%%i
- call :OneByOne !List!
- echo\&echo\
- )
- echo 演示完毕.任意键以退出.
- pause>nul
- :OneByOne
- set /p=!List:~0,1! <NUL
- set List=!List:~1!
- set /p=<NUL
- if not *"!List!"==*"" (ping /n 1 127.1>nul&goto :OneByOne)
- ping /n 2 127.1>nul
- call :Shine %1
- goto :eof
- :Shine
- call :Clear
- set /p= %1<NUL&CALL :Clear
- goto :eof
- :Clear
- for /l %%j in (1 1 60) do (
- set /p=<NUL
- )
复制代码
[ 本帖最后由 novaa 于 2007-12-26 17:28 编辑 ]
作者: zhnzhouhan 时间: 2007-12-26 16:25
版主:
以上代码你测试过了吗?
我复制你的代码测试不行啊!
只显示NUL然后就不动了??
作者: ieutk 时间: 2007-12-26 16:41
- @echo off&setlocal enabledelayedexpansion
- set "str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 人民不敌人民币"
- for %%i in (%str%) do (
- set List=%%i
- call :OneByOne !List!
- echo\&echo\
- )
- echo 演示完毕,按任意键退出. . .
- pause>nul
- goto :eof
-
- :OneByOne
- set /p=!List:~0,1! <nul
- set /p=<nul
- set List=!List:~1!
- if not "!List!"=="" (goto :OneByOne)
- for /l %%j in (1 1 100) do @set /p=<nul
- set /p= %1<nul
- for /l %%j in (1 1 100) do @set /p=<nul
- goto :eof
复制代码
作者: novaa 时间: 2007-12-26 17:26
已经在二楼更正了。郁闷 。。。。
作者: 随风 时间: 2007-12-26 20:43
我猜楼上两位都理解错了楼主的意识,
楼主似乎要求的是,先逐字显示一句,再闪烁这一句,
字符闪烁其实很简单,就是利用退格键,先显示字符,再用空格覆盖显示的字符,再显示字符....
加上延时,就起到了闪烁的效果了.
试试下面的代码.
:- @echo off&setlocal enabledelayedexpansion
- set str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 人民不敌人民币
- for %%i in (%str%) do (
- set var=%%i&set num=%%i
- set /a max=0,ge=0
- call :lis !var!
- )
- echo\&echo 演示完毕,按任意键退出. . .
- pause>nul&exit
- :lis
- set /p=!var:~0,1!<nul
- set /a ge+=2
- set var=!var:~1!
- for /l %%a in (1 1 1200) do ver>nul
- if not defined var (
- set ko= &set t=
- for /l %%a in (1 1 !ge!) do set ko= !ko!&set t=!t!
- set /p=!t!<nul
- goto loop
- )
- goto lis
- :loop
- set /p=!ko!<nul
- set /p=!t!<nul
- for /l %%a in (1 1 1200) do ver>nul
- set /a max+=1
- set num=%ko%&set ko=%num%
- if !max! geq 4 echo\&goto :eof
- goto loop
复制代码
作者: youxi01 时间: 2007-12-26 21:06
随风兄似乎写了很多有关动画方面的代码了,哈哈
上段代码 在显示字符的时候,延时可不可以缩短一些呢?
这样可能动画效果更好
作者: 随风 时间: 2007-12-26 21:44
原帖由 youxi01 于 2007-12-26 21:06 发表
随风兄似乎写了很多有关动画方面的代码了,哈哈
上段代码 在显示字符的时候,延时可不可以缩短一些呢?
这样可能动画效果更好
呵呵,感觉动画更能挑战思路一些.
上面的代码仅仅只为达到效果,没作优化和美化.
作者: novaa 时间: 2007-12-26 22:25
- if not defined var (
- set ko= &set t=
- for /l %%a in (1 1 !ge!) do set ko= !ko!&set t=!t!
- set /p=!t!<NUL
- goto loop
- )
复制代码
随风版主啊!
这个漂亮啊!
又学习了。!
作者: zhnzhouhan 时间: 2007-12-28 00:05 标题: 感谢各位!
谢谢楼上的各位!
我自己也写了个,就是按我原来的改的!
写得不好,大家勿笑啊!!- @echo off&setlocal enabledelayedexpansion
- set str=忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 人民不敌人民币
- for %%i in (%str%) do (
- set char=%%i
- echo.
- echo.
- for /l %%j in (0,1,15) do (
- set/p=!char:~%%j,1!<nul
- ping -n 1 127.1>nul
- )
- set /p a=<nul
- set /p a= <nul
- set /p a=<nul
- call :hero %%i
- echo %%i
- )
- pause>nul
- :hero
- for /l %%k in (1,1,3) do (
- set /p a=%1<nul
- ping /n 1 127.1>nul
- set /p a=<nul
- set /p a= <nul
- set /p a=<nul
- ping /n 1 127.1>nul
- )
- goto :eof
-
-
复制代码
[ 本帖最后由 zhnzhouhan 于 2007-12-28 00:06 编辑 ]
作者: foxJL 时间: 2007-12-28 01:35
凑个热闹...- @echo off&setlocal enabledelayedexpansion
- for %%i in (
- 忆往昔 我笑豺狼哭 叱咤天地风云际 望今朝 笑贫不笑娼 人民不敌人民币
- ) do (
- set str=%%i
- for /l %%j in (0,1,15) do (
- call set/p=%%str:~%%j,1%%<nul
- ping -n 1 127.1>nul
- )
- call :back
- echo\&echo\
- )
- pause
- :back
- for /l %%a in (1,1,3) do (
- for %%b in (b a b) do (
- if "%%b"=="a" (set a= ) else (set a=)
- for /l %%i in (1,1,15) do (set/p=!a!<nul)
- ping -n 1 127.1>nul
- )
- ping -n 1 127.1>nul
- set/p=!str!<nul
- )
- goto :eof
复制代码
[ 本帖最后由 foxJL 于 2007-12-28 21:27 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |