Scratch编程技巧之「停止脚本执行」积木用法
一、说明
Scratch在[控制]类积木下有一种积木称为[停止脚本执行],如图所示:
如上图所示,共有三种应用情形。
(1)停止(全部脚本):终止整个程序执行,彻底退出程序;
(2)停止(这个脚本):终止这个角色对应的当前代码组(本积木所在代码组)的执行,而不影响当前角色其他代码组的执行;
(3)停止(该角色的其他脚本):终止执行这个角色其他代码组的执行,而不影响当前代码组(本积木所在代码组)的执行。
在实际应用中,我们不仅要关注这个积木各个命令本身,还要观察此积木的形状。细心的小程序员会注意到,在情形(1)和(2)时,这个积木底部是平面的,意即此时后面不能再接续其他积木代码了!
但是,在情形(3)时,这个积木底部变成凹形,意即此时后面可以再接续其他积木代码!这是基于实际程序开发中的需求,Scratch开发人员作出的明智决定,参考下图。
下面例子给出了此积木的典型应用:
上面两组代码是应用于某一个程序的舞台角色上。左边代码的含义是在通常情况下,开始运行程序后,连续地播放舞台背景音效。
右边的含义:当舞台收到“end”消息时会通过调用上面的积木块(情形3)硬性结束舞台背景音效的播放(可能很长),然后开始播放另一段指定音效。
二、有关使用技巧
在情形(2)时,简单情况下,此功能意思是结束当前代码组的执行。但是,在有些复杂的开发中(实际应用软件开发需求是各种各样的),这块积木具有明确的局限性。请看下面的例子:
上面代码中我在当前调试的植物大战僵尸游戏中使用的,代码意思很明确:通过上述两个自定义积木计算当前要种植的植物的坐标位置。
但是,在创建上面代码前我使用了一个自定义积木,如下所示,想一次性计算出要种植的植物的坐标位置。大家看看有没有问题:
注意,上面代码的意思是,先求X坐标,再求Y坐标,分别把求得的结果存储到两个变量中。但是,由于计算中要求遍历列表来计算,即需要使用循环来确定玩家点击的鼠标位置,然后确定要种植的坐标区间。而为了提高程序效果,一旦计算出这个坐标值,应当立即结束当前循环的执行(再执行没有必要),再继续往下执行求后面的Y坐标。
上面示例中很典型中说明了Scratch终止类积木的第(2)种情形的需要,但是,上面代码存在明显错误,即第一处调用后,此代码组一次性结束执行,后面不会再求Y坐标了。
为此,我想到的办法之一是:使用上面两组积木方案,即X坐标与Y坐标单独分别求解。
再想想,上面自定义积木“计算待植物的坐标”能够稍微改进一下,也能实现我们的计算目的呢?
当然有。答案还在于:自定义积木。
因为根据上面分析,在情形(2)时,这个积木底部是平面的,意即此时后面不能再接续其他积木代码了!但是,Scratch自定义积木总是会以后面可以接续其他积木的方式出现,即总是凹形的。于是有下面办法来改进上面的Scratch默认的情形(2)停止积木的局限性:
有了上面定义后,结果显示如下:
如何?问题显示得以解决!只需要把上面“停止(这个脚本)”这块内置积木更换成我们自己的“停止这个脚本扩展”这块积木即可.
- 编程技巧 C#数据库操作的三种用法
- 【shell编程】shell脚本介绍、shell脚本结构和执行、date命令用法和shell脚本中的变量
- linux技巧----查找某个正在执行的脚本
- 【VC编程技巧】文件☞2.3CArchive的用法
- [置顶] Hive编程指南-JDBC连接、脚本执行
- linux下Bash编程循环语句特殊用法之编写脚本(十)
- microtime()函数用法 及 计算脚本执行时间
- Qt实用技巧:win将ffmpeg、opengl、osg等各种库封装成qt模块,运行需要dll,增加自动拷贝运行库到exe目录执行脚本
- 编程技巧:document.execCommand()用法详解
- Shell脚本编程概述(二):执行语句
- Scratch第一讲|孩子为什么要学Scratch积木编程
- 链接脚本在编程中的高级运用之二——执行时库和C++特性支持
- [技巧] Javascript模块化编程(三):require.js的用法
- shell技巧--ssh远程执行包含nohup命令的脚本
- linux环境在tomcat启动或者停止后执行shell脚本,脚本内容备份图片文件夹
- C#编程技巧集.让窗体飘动起来.C#中Timer组件用法
- shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
- VC编程技巧:IE控件的高级用法
- JAVA执行mysql脚本和mysql相关命令(alter table示例/多表更新/Insert Into Select/多表查询) 及ibatis模糊查询(concat用法)
- 第二部分 Linux Shell高级编程技巧——第三章 运行级别脚本介绍