Scratch在[控制]类积木下有一种积木称为[中止脚本执行],如图所示:
如上图所示,共有三种应用情形。程序员
(1)中止(所有脚本):终止整个程序执行,完全退出程序;编程
(2)中止(这个脚本):终止这个角色对应的当前代码组(本积木所在代码组)的执行,而不影响当前角色其余代码组的执行;小程序
(3)中止(该角色的其余脚本):终止执行这个角色其余代码组的执行,而不影响当前代码组(本积木所在代码组)的执行。ide
在实际应用中,咱们不只要关注这个积木各个命令自己,还要观察此积木的形状。细心的小程序员会注意到,在情形(1)和(2)时,这个积木底部是平面的,意即此时后面不能再接续其余积木代码了!调试
可是,在情形(3)时,这个积木底部变成凹形,意即此时后面能够再接续其余积木代码!这是基于实际程序开发中的需求,Scratch开发人员做出的明智决定,参考下图。
下面例子给出了此积木的典型应用:blog
上面两组代码是应用于某一个程序的舞台角色上。左边代码的含义是在一般状况下,开始运行程序后,连续地播放舞台背景音效。游戏
右边的含义:当舞台收到“end”消息时会经过调用上面的积木块(情形3)硬性结束舞台背景音效的播放(可能很长),而后开始播放另外一段指定音效。开发
在情形(2)时,简单状况下,此功能意思是结束当前代码组的执行。可是,在有些复杂的开发中(实际应用软件开发需求是各类各样的),这块积木具备明确的局限性。请看下面的例子:it
上面代码中我在当前调试的植物大战僵尸游戏中使用的,代码意思很明确:经过上述两个自定义积木计算当前要种植的植物的坐标位置。class
可是,在建立上面代码前我使用了一个自定义积木,以下所示,想一次性计算出要种植的植物的坐标位置。你们看看有没有问题:
注意,上面代码的意思是,先求X坐标,再求Y坐标,分别把求得的结果存储到两个变量中。可是,因为计算中要求遍历列表来计算,即须要使用循环来肯定玩家点击的鼠标位置,而后肯定要种植的坐标区间。而为了提升程序效果,一旦计算出这个坐标值,应当当即结束当前循环的执行(再执行没有必要),再继续往下执行求后面的Y坐标。
上面示例中很典型中说明了Scratch终止类积木的第(2)种情形的须要,可是,上面代码存在明显错误,即第一处调用后,此代码组一次性结束执行,后面不会再求Y坐标了。
为此,我想到的办法之一是:使用上面两组积木方案,即X坐标与Y坐标单独分别求解。
再想一想,上面自定义积木“计算待植物的坐标”可以稍微改进一下,也能实现咱们的计算目的呢?
固然有。答案还在于:自定义积木。
由于根据上面分析,在情形(2)时,这个积木底部是平面的,意即此时后面不能再接续其余积木代码了!可是,Scratch自定义积木老是会之后面能够接续其余积木的方式出现,即老是凹形的。因而有下面办法来改进上面的Scratch默认的情形(2)中止积木的局限性:
有了上面定义后,结果显示以下:
如何?问题显示得以解决!只须要把上面“中止(这个脚本)”这块内置积木更换成咱们本身的“中止这个脚本扩展”这块积木便可.