Kontakt Script官方教程 – 控制语句

目录
[隐藏]

控制语句

一般我们做出的决定,都是根据情况而定的。KSP内含了三种控制语句,来在不同情况下运行不同代码:if,select与while。

if…else…end

下例中的if…else…end(如果……否则……终止)控制语句浅显易懂:

on note
  if($EVENT_VELOCITY > 80)
    play_note($EVENT_NOTE+12,$EVENT_VELOCITY,0,-1)
    message("loud " & $EVENT_VELOCITY)
  else
    message("soft " & $EVENT_VELOCITY)
  end if
end on

如果条件$EVENT_VELOCITY > 80为真(True),程序便会运行if分支下的代码;如果条件为假(False),else分支下的代码就会运行。else分支是可选的,换言之可以不写。

select()

select()语句(选择语句)是if..else..end的复杂版本:

on note
  select($EVENT_VELOCITY)
    case 1 to 40
      message("Script message: key struck SOFT")
    case 41 to 100
      message("Script message: key struck MEDIUM")
    case 101 to 126
      message("Script message: key struck HARD")
    case 127
      message("Script message: key struck BRUTAL")
  end select
end on

select语句与if语句十分相似,但select语句下的分支数是任意的。关键字select后的语句会被程序评估,判断其与哪个case后的条件匹配。程序找到匹配的case分之后,会立即执行此分支下的语句。case分支后的条件,既可以是单个常数,也可以是数值范围(表记形式为x to y)。

while()

理论上,while语句是if语句的持续版本,因此也可以称其为当型循环(while loop)。下例中的代码模拟了曼陀林震音(mandolin tremolo)。

on note
  wait(70000)
  while($NOTE_HELD = 1)
    play_note($EVENT_NOTE,$EVENT_VELOCITY,0,70000)
    wait(70000)
  end while
end on

$NOTE_HELD是一个内建变量,当有按住的音符触发回调函数时,其值为1,否则为0。用户按住音符时,KSP会运行while循环中的内容,也就是说此程序会先演奏一个音符,等待片刻,再继续演奏,如此循环。

当用户释放琴键时,$NOTE_HELD的值为0,while的条件不被满足,因此循环内的语句被程序忽略,回调函数终止。

0

评论0

请先

没有账号? 忘记密码?