友情提示:380元/半年,儿童学编程,就上码丁实验室。
Scratch对于键盘按键的支持仅限于二十六个字母、0-9十个数字、四个方向键、空格键以及“任意键”,且所谓的任意键仅局限于上述几种按键。Scratch项目无法识别退格键、回车键、上档键(当然一般的用户界面操作,如输入参数时,都是可以使用这些按键的)。所以Scratch对于键盘按键的支持还是比较弱的。如果你想制作一个允许用户输入内容的项目(如登录界面,输入用户名和密码),包含退格功能,那么一般来说都只能用别的按键代替,而不是像在其他办公软件直接按退格(delete)键即可。某种程度上来说,遇到软件的局限性是Scratchers最束手无策的情况。
事实上,如果你真的很想尝试在Scratch中实现这些特殊按键的侦测,也并不是没有办法,毕竟人的主观能动性是很强大的。本文将会介绍这种称之为“hacked blocks”的办法。
01
1、新建项目,拖出一个【按键()是否按下?】放在脚本区。
2、将项目保存在桌面,此时后缀为.sb2。
3、将后缀改为.zip,即压缩文件。
4、打开压缩包,找到文件“project.json”,拷贝至桌面。
BTW,这些其他文件,png、svg都是刚才的scratch项目中的造型、背景图片,.wav则是角色自带的声音文件。
5、我使用notepad++进行编辑
6、打开后就能看到项目的源文件了,其中包含了这个项目的所有信息和内容。这里有很多可以挖掘的内容
7、找到脚本,找到刚才使用的【按键()是否按下?】积木。
8、脚本信息,10,10表明这块积木在脚本区中的坐标(Scratch不止舞台有坐标,脚本区、绘图编辑器中都是用坐标来表示对象的位置的),“keyPressed”表示【按键()是否被按下?】积木,后面的“space”则表示你通过下拉菜单选择的按键——空格键。没错,如果希望我们的项目能侦测特殊按键,修改这个部分即可。
"scripts": [[10, 10, [["keyPressed:", "space"]]]]
"scripts": [[10, 10, [["keyPressed:", "u0008"]]]]
11、将后缀改回.sb2
12、打开项目,可以看到原来的【按键()是否按下?】积木变成了现在这样。
13、使用如下程序测试按键是否能正常使用
14、按下键盘退格键(backspace),小猫说“按下”,说明条件成立,说明此时你的项目已经可以侦测退格键了。
02
1、退格键仅仅是特殊按键中的一种,其他键盘上的按键也可以用这种方法实现,只要通过查询得到其Unicode编码,如Esc键可以用”u001b”表示。另外回车键可以用“r”表示,Tab键可以用“t”表示。
2、特殊按键侦测也仅仅是Hacked blocks众多应用中的一种,只要你充分发挥想象力,还可以实现其他许多的功能。
3、当然,由于这是一种非常规手段,所以在稳定性上面难以保证,使用时要谨慎(单用作特殊按键侦测目前还没有发现异常情况)。
4、附上案例视频
Final
往期原创文章推荐
1、每个Scratcher都应该知道的浮点运算
2、Scratch3.0的造型中心点精确校准方法
3、Scratch3.0的十宗罪
4、Scratch2.0中【碰到颜色()?】积木产生的卡顿现象及分析
5、关于Scratch
6、从数据类型到计算思维
7、Scratch中颜色的正确使用姿势
转自公众号:
Scratch格物堂