欢迎光临
我们一直在努力

Scratch第十三讲:按键的技巧

检测按键事件好像非常容易的,因为有一个事件命令就叫当按下...键。

这个命令就可以检测多所有的按键。平常我们就经常用到这个命令,比如用上下左右键来调整角色的方向,用空格键操作一些角色的动作,如发射子弹,跳起来等。

但是我们会碰到另一种按键的情形,就是持续按下,或者说长时间按下空格键,会出现什么情况。我们试一下。

发现没有,在按着空格键不动的时候,小猫走了10步后先停顿了一下,然后才会连续运动。而不是一直连续运动。

这是什么情况呢?CC哥觉得这应该Scratch的设计者在做这个命令的时候,在程序里增加了抗干扰的代码。一般来说,按键操作每个人都不一样,有的人按的很快,有的人对键盘不熟悉,按的很慢,那么程序要判断你是按了几次呢?所以这里面就有一个抗干扰代码,来判断你是只按了一次键,而不是想连着一直按,所以给了个停顿来消除按键中的干扰因素。当然如果你确实一直按着不撒手,那说明你就是要一直按着,也就继续执行了。所以这个事件命令就是针对一次性的按键事件,而不是用来做按着不放的按键事件。

但是如果我们就是希望一直按着键盘,而不是只是想按一下呢?比如我们需要用键盘来控制小猫的行走,你肯定希望当按键按下时,小猫就能连续走,而不是还要停一下。那怎么编写这段代码呢?

我们用一个循环侦测组合,不断的去检测是否空格按键被按下,如果按下了就移动10步。让我们来看看这段代码的执行效果。

看,这走起来是不是行云流水一般。

不过感觉上有点不方便,之前空格键检测就用了一条事件命令,而现在却要写一段代码,如果是一个大型程序,反复要检测空格键怎么办,那不是反复要写一段代码?

不用担心,我们可以用之前学过的一个命令解决这个问题。就是广播和接收。

看,把循环判断中的移动命令换成了广播命令,广播一条空格键被按下的消息,然后用接收命令来接收到消息后执行后面的代码。这样在大型程序里就不需要反复去写一段代码了,只需要用一条接收消息的命令就可以了。是否很像其他编程工具和数学里的函数以及函数调用?原来广播命令还有这种使用方式,是不是很开心。

今天CC哥主要讲了按键和长按的区别,以及如何处理长按这样程序里经常用到的操作。用这个原理,大家可以尝试着用创建一个长按的积木,用于检测更多键的长按操作。(创建新积木这部分CC哥以后会专门来讲)

CC哥的跟我学编程,跟其他的学习编程的课程不一样,CC哥会重点教大家编程思维逻辑。让小朋友们从小就能培养好的逻辑思维习惯,和培养优秀的思维品质。而不是教小朋友去做码农。如果你认同CC哥的理念的话,就请关注CC哥的公众号,并推荐给你的朋友们。

历史文章:

赞(29)
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址