友情提示:380元/半年,儿童学编程,就上码丁实验室。
01
积木介绍
Scratch2.0中的【碰到颜色()?】积木的作用是侦测角色是否碰到指定颜色,如果是,则返回“true”。点击积木中的色块可以开启取色模式,可以移动鼠标至编辑器中任意位置点击进行取色。另外在3.0中,取色的范围仅限于舞台展示区。
02
问题复现
【碰到颜色()?】积木一般会和【如果()那么()】和【重复执行】积木配合使用,如视频中所示,如果直接将【碰到颜色()?】积木拼接在正在执行的空的【重复执行】积木中,将会出现卡顿
而另一种情况因为展示效果不佳因此视频中未放出,先将所有积木拼接完毕(如上图),再运行程序,同样会出现卡顿。
如视频中所示,如果在循环中加入延时【等待(0)秒】,卡顿现象消失。或者使【碰到颜色()?】返回true且正常执行命令(【如果()那么()】积木的“那么”部分不为空)。
另外,这个问题仅在Scratch2.0版本中产生,网页版编辑器会产生较长时间卡顿,离线版也有卡顿但持续时间较短。
03
原因分析
【碰到颜色()?】积木消耗计算机资源过大(因为其他积木没有出现这个现象),无限制地循环导致FLASH崩溃(加入延时,或为“true”执行后续命令时不会产生卡顿)。Scratch3.0中不会出现这个问题的原因可能是3.0不是基于FLASH的,也可能是“建立了一个内部限制”,如Scratch WIKI所说。
04
避免方法
1、避免在【碰到颜色()?】为“false”且循环中没有执行其他积木时运行程序。
2、避免在【碰到颜色()?】为“true”但执行命令为空时运行程序。
3、改用3.0吧
对于这个问题如果你有自己的见解请在后台留言,Scratch格物堂期待与你交流。
转自公众号:
Scratch格物堂