处理完了字符的下落逻辑,我们重新回到小齿轮对象,来处理按键的处理,关于按键防抖,博主在博文《Scratch 利用开关量实现按键防抖》有过提及,在实现打字游戏的过程当中,也遇到了类似的问题,当按下某按键的粘连时间过长时,会导致屏幕上所有的该字母一起消失,轻松实现了一个连击。
下面这张图如果看不清楚的,可以尝试右键“在新标签页中打开图片”哦。这里利用了一个按键防抖
的开关量,让按键在首次被按下时才执行确定需要删除的字符的操作,当按键未被松开,那么计数器无法回零,按键防抖变量就无法被重置,也就跳过了第二次按键判定。
这里值得注意的是重复执行直到
这块积木的逻辑,这里使用了一个“或者”的条件,当找到有值时,或者当超过列表长度时,循环即告停止,需要删除字符
变量的设置是在找到有值的情况下,当停止条件是超过列表条件时,删除计数
变量的值会超过列表长度,所以也就不再对删除字符
这个变量赋值。当这个判定不存在时,会出现快速点击按钮时,新出现的任意字符立刻消失的bug。问就是博主也是遇到bug才调整的代码 - -!!!。
添加按键防抖之后,长按某键时,我们只会修改一次删除字符
这个变量的值,这个变量提供给屏幕中掉落的克隆体群体使用,当有克隆体发现用户按下了按键,即对照删除字符
这个变量存储的行号,去查询字符统计表中的所有项,当发现表中删除字符
这一行中的内容与克隆体自身的私有变量_字符编号
一致时,就删除掉自己。删除后不再有下落操作,所以也不会在触发触底扣血的操作了。