一、Scratch无限循环积木局限性
且看下面Scratch对于循环类支持的积木,共三块:
Scratch对于循环类支持的积木
【注】至写本文的Scratch 3.10.2版本为止,Scratch仍然仅支持上述三种类型的循环积木。
很明显,其中的无限循环积木之后不能再接续其他积木了。因此,Scratch设计者把这个无限循环设计为只能在一组积木代码的最外层使用,如果想使得这种循环及其内部嵌入的积木代码作为一段普通代码置于一段长代码的内部使用是不行的!
但是,就各种程序的实际需求来看,常常有上述需求。那么,能不能克服上述不足,让它的后面再接续其他的积木呢?
二、解决办法
在手头编写的代码中就遇到这样一种实际需求,必需解决。网络搜索,很难找到有关参考。无奈之下,只能自己想办法。最后,我想到的办法是——使用自定义积木来解决上述问题!
如果读者细心观察Scratch自定义积木,你会注意到它后面是允许接续其他(合理的)积木的,即使这个自定义积木代码的最外层是无限循环积木。本文提到的办法中正是利用了这个“隐藏的技巧”!这样一来,上面问题迎刃而解!
三、举例
因为时间关系,我直接上自己编程中使用的代码来说明上述解决办法。我自定义的积木如下所示:
我的自定义积木克服无限循环局限性
为了纪念这次“重大发现”,我给上述自定义积木起了一个漂亮的名字“长尾巴的无限循环”。
然后,在复杂的积木命令内部即可使用了,如下所示:
使用长尾巴的无限循环
通过上述办法,便能间接地实现了在无限循环后连接其他积木的目的。
四、小结
Scratch给我的印象越来越坚定:给开发者一个最小功能集合,其他的全由其自己来定义!Scratch组技术人员则集中精力来确保系统核心功能的稳固性!熟便能生巧,真是如此!或者更准确一些说,有些方法很多时候是“逼”出来的。
总感觉哪里怪怪的…