Algodoo小球比赛教程(2):代码(e)=>{}
(本教程适合已经拥有一定基础的人观看,如果在基础方面有不懂,可以看:Algodoo部分基础属性介绍 by灰安教主)
光会摆放各种障碍还不能构成一个比赛。一个小球比赛后面必然有代码的支撑。
本教程主要讲解含有(e)=>{}的部分。
由于本人并不懂专业术语,如果专业术语方面有错各位大佬轻喷。
注意:本文都是文字,可能有些难以理解,把Algodoo打开跟着尝试一下会效果更好!

(e)=>{}
这是一个类似函数的表达。
把代码写在大括号里面就行。
每个物体都有一些部分会带有这个。
onClick
onClick的意思就是“当物体被鼠标点击后”。
也就是说,onClick内部的代码会在物体被鼠标点击后运行。
onCollide
onCollide的意思就是“当物体发生碰撞后”。
也就是说,无论是其他物体碰撞到了它,抑或是它碰撞到了其他物体,onCollide内部的代码都会运行。
值得一提的是,当碰撞发生后,会有专门的变量记录另一物体的各种属性——"e.other."。
所以,假如你想让小球碰到某个物体后传送,就可以这样写:
(e)=>{
e.other.vel=e.other.vel+[0,1];
}
onDie
onDie的意思就是“当物体消失后”。
这里就要涉及到一个局部变量:timeToLive。
timeToLive的意思是“物体剩余存活时间",里面的数字以秒为单位。
当timeToLive里面的倒计时结束后,物体就会消失不见(不是隐形,而是真的没有了)。
onDie就是在timeToLive倒计时结束后运行内部的代码的。
onHitByLaser
onHitByLaser的意思就是“当物体被激光射击到后”。
也就是说,onHitByLaser内部的代码会在物体被激光射击到后运行。
onKey
onKey的意思就是“当按键被按下后”。
也就是说,onKey内部的代码会在键盘上任意按键按下后运行。
onSpawn
onSpawn的意思就是“当物体生成后”。
也就是说,onSpawn内部的代码会在物体生成后运行。
注意,这个“生成”的意思是确确实实刚刚生成出来的,不然是不会触发的。
有一个最好的实验方法就是:在onSpawn里面写一点代码,然后对着物体ctrl+x,再ctrl+v,你就可以看到效果。
postStep和update
postStep和update都是会不断重复执行的。
但是有不同:postStep的重复执行效果要在拟真开始后才会起效,而update无论何时都会起效。
给含有(e)=>{}的函数赋值
假如你想要在运行过程中改变onCollide的内部代码,该怎么办呢?
举个例子,如果你想要第一个碰到这个物体的小球直接消失,第二个以后的小球碰到后向上跳,可以把这个写在onCollide里面:
(e)=>{
e.other.timeToLive=0;
onCollide=(e)=>{
e.other.vel=e.other.vel+[0,1];
}
}
(不要忘了分号!)
没错,带(e)=>{}的函数,如果要赋值,格式就是(函数名)=(e)=>{(内容)}

由于代码很多且难以理解,我不会去专门讲代码相关,建议最好去学习一下C++、Java等编程语言再来使用,不然上手会有些困难。
好了,本期教程就到这里,希望各位能够理解并学会使用它们!
(附:"="和"==":
在这里,"="的意思是赋值,比如a是3,b是6,写a=b的意思就是让a等于6
而"=="的意思是等于条件判断,比如a是3,b是6,写a==b的意思就是判断a等不等于b,现在来看是不等于的,会返回false。如果等于,就会返回true)