按键精灵——脚本流程结构(3)

中断命令

让脚本随时停止运行的命令
EndScript
ExitScript

EndScript(脚本停止运行)

除了F12可以让脚本停止运行,还可以用EndScript

打开记事本,当运行这段代码时
keypress “1”,1
delay 100
keypress “2”,1
delay 100
EndScript //到这里就结束运行了,结果为12
keypress “3”,1

ExitScript (退出脚本)

虽然EndScript和ExitScript都可以停止脚本,但是
EndScript只能停止当前线程
而ExitScript可以停止整个脚本

运行以下代码
beginthread 多线程//这是一个启动多线程的命令
delay 1000
tranceprint “主脚本”
exitscript//结果从线程主脚本就结束进程
//endscript//若换成endscript,从线程主脚本后,会继续执行线程
tranceprint “停止脚本”
sub 多线程()//这是一个多线程
do
tranceprint “线程” & i
delay 200
loop
end sub

RestartScript(重启脚本运行)

可以重启脚本,让脚本从头执行

运行以下代码
for i=0 to 2
delay 1000
tranceprint “内容” & i
next
restartscrip//重启脚本,运行结果不会再执行脚本结束,会不断重复0 1 2……
tranceprint “脚本结束”

(Sub)子程序

一个脚本内容相同或相似,或者把一个大的分解成若干个子任务。
以上情况可以单独写成子程序,然后再调用,调用完后,会自动回到调用处,然后继续往下执行。
子程序如果不被调用,是不会被执行的
子程序可以互相调用

语法格式
Sub 子程序名(参数列表)
脚本代码
End Sub

调用子程序
Call 子程序名(参数列表)//如果没有这个,子程序是不会被执行的

1.不带参数的子程序
参数,每个参数都是用逗号隔开,这些参数叫形参,仅仅只是当前的子程序,如果传进来的叫实参

例如ifcolor中的一个补血脚本,在完整脚本中,补血只是一个小功能,所以可以把补血放倒一个子程序中。
call 自动补血()//从这里跳到自动补血里
tranceprint “调用自动补血完成”
sub 自动补血()
ifclolr 1289,281,“B9A05E”,0, then
messagebox “颜色等于”
else
messagebox"颜色不等于"
end if
end sub//执行完后会回到call后面

2.带参数的子程序
可以往子程序里传递参数

例如下列代码
x=1
y=2
call 子程序(x,y)//x对应a,y对应b,一一对应,不能多写,也不能少写
sub 子程序(a,b)//a和b是参数,是形参,也就是说,只有当在子程序内的时候才会显示的
tranceprint “a=” & a
tranceprint “b=” & b
end sub

从上面运行的脚本来看,实参x的值传递给了形参a,实参y的值传递给了形参b,所以a的值是1,b的值是2.
当实参的值传递给了形参后,形参再如何改变,实参都不会改变&

例如下列交换变量的值的例子
x=1
y=2
call 交换变量的值(x,y)//实参
sub 交换变量的值(x,y)//此x,y非彼x,y,这里是形参
z=x
x=y
y=z
tranceprint “交换后,形参x=” & x
tranceprint “交换后,形参y=” & y
end sub
上面可以看出,子程序里x,y交换了,主脚本中仍然是原值

call互相调用子程序时,有时会死循环,可能使脚本崩溃
因为每次调用子程序都会用一段内存来保存未执行的部分,所以内存会占用越来越多,最终导致崩溃

比如以下代码:
call a()
sub a()
call b()
tranceprint “a”//被保存到内存里,被循环调用,被循环保存
end sub
call a()
tranceprint “b”//被保存到内存里
end sub

Function(函数)

函数和子程序类似,唯一不同的就是,函数要有返回值

语法格式:
Function 函数名(形参)
脚本代码
End Function

例如下列代码
和=加法(1,2)//加法是一个函数
tranceprint “1+2=” & 和
function 加法(a,b)
加法=a+b//这是一个返回值的写法
end function

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值