Scratch教程——按键的技巧

检测按键事件好像非常容易的,因为有一个事件命令就叫当按下…键。
Scratch教程——按键的技巧_第1张图片
这个命令就可以检测多所有的按键。平常我们就经常用到这个命令,比如用上下左右键来调整角色的方向,用空格键操作一些角色的动作,如发射子弹,跳起来等。

但是我们会碰到另一种按键的情形,就是持续按下,或者说长时间按下空格键,会出现什么情况。我们试一下。
Scratch教程——按键的技巧_第2张图片
Scratch教程——按键的技巧_第3张图片
发现没有,在按着空格键不动的时候,小猫走了10步后先停顿了一下,然后才会连续运动。而不是一直连续运动。

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

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

Scratch教程——按键的技巧_第4张图片
我们用一个循环侦测组合,不断的去检测是否空格按键被按下,如果按下了就移动10步。让我们来看看这段代码的执行效果。
Scratch教程——按键的技巧_第5张图片
看,这走起来是不是行云流水一般。

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

不用担心,我们可以用之前学过的一个命令解决这个问题。就是广播和接收。
Scratch教程——按键的技巧_第6张图片
看,把循环判断中的移动命令换成了广播命令,广播一条空格键被按下的消息,然后用接收命令来接收到消息后执行后面的代码。这样在大型程序里就不需要反复去写一段代码了,只需要用一条接收消息的命令就可以了。是否很像其他编程工具和数学里的函数以及函数调用?原来广播命令还有这种使用方式,是不是很开心。

你可能感兴趣的:(scratch)