最新消息:

Scratch2.0中【碰到颜色()?】积木产生的卡顿现象及分析

Scratch 少儿编程 3435浏览 0评论

友情提示:视频教程观看时请手动设置清晰度。

01

积木介绍

 

Scratch2.0中【碰到颜色()?】积木产生的卡顿现象及分析

        Scratch2.0中的【碰到颜色()?】积木的作用是侦测角色是否碰到指定颜色,如果是,则返回“true”。点击积木中的色块可以开启取色模式,可以移动鼠标至编辑器中任意位置点击进行取色。另外在3.0中,取色的范围仅限于舞台展示区。


02

问题复现

【碰到颜色()?】积木一般会和【如果()那么()】和【重复执行】积木配合使用,如视频中所示,如果直接将【碰到颜色()?】积木拼接在正在执行的空的【重复执行】积木中,将会出现卡顿

Scratch2.0中【碰到颜色()?】积木产生的卡顿现象及分析

 而另一种情况因为展示效果不佳因此视频中未放出,先将所有积木拼接完毕(如上图),再运行程序,同样会出现卡顿。

        如视频中所示,如果在循环中加入延时【等待(0)秒】,卡顿现象消失。或者使【碰到颜色()?】返回true且正常执行命令(【如果()那么()】积木的“那么”部分不为空)。

另外,这个问题仅在Scratch2.0版本中产生,网页版编辑器会产生较长时间卡顿,离线版也有卡顿但持续时间较短。


03

原因分析

        【碰到颜色()?】积木消耗计算机资源过大(因为其他积木没有出现这个现象),无限制地循环导致FLASH崩溃(加入延时,或为“true”执行后续命令时不会产生卡顿)。Scratch3.0中不会出现这个问题的原因可能是3.0不是基于FLASH的,也可能是“建立了一个内部限制”,如Scratch WIKI所说。

Scratch2.0中【碰到颜色()?】积木产生的卡顿现象及分析


04

避免方法

       1、避免在【碰到颜色()?】为“false”且循环中没有执行其他积木时运行程序。

        2、避免在【碰到颜色()?】为“true”但执行命令为空时运行程序。

        3、改用3.0吧


对于这个问题如果你有自己的见解请在后台留言,Scratch格物堂期待与你交流。

转自公众号:
Scratch格物堂

您必须 登录 才能发表评论!