如何在mit-scratch中隐藏特定的sprite?

gpu*_*guy 1 mit-scratch

我正在尝试编写一个临时代码,其中按下按钮时将显示一个特定的精灵,而在另一个按钮按下将显示另一个精灵,第一个应该消失.

我想知道应该在这里使用的划痕的基本功能.

use*_*r58 5

有几种不同的方法可以做到这一点.有很多方法可以使用更少的脚本或更少的精灵,并使用不同的方法.这里有两种方式,显示两种不同的方法,最后是奖金.

让我们从最简单的方式开始吧.

4个精灵,8个脚本,16个块.使用广播.

在这里,我们将使用四个精灵:

划痕|  Gobo |  ShowGoboButton |  ShowScratchButton

我们有一个Scratch精灵,一个Gobo精灵,一个ShowGoboButton精灵和一个ShowScratchButton精灵.

这些精灵中的每一个都有脚本.

对于按下按钮时显示和消失的两个精灵 - Gobo和Scratch - 我们需要让它们在事件发生时显示和消失 - 单击按钮时.所以当点击按钮时需要发生一些事情.我们怎么做?随着这个SPRITE CLICKED块.将其与另一个块(BROADCAST块)结合使用,我们可以在按下它时执行某些操作.

所以这就是ShowGoboButton精灵在其脚本中的含义:

当这个SPRITE点击,广播

单击该按钮时,它会广播一条消息......但此刻,它正在广播中.没有人在听广播.Gobo(和Scratch)精灵需要听广播,然后根据听到的内容显示或隐藏.

这就是Gobo隐藏在脚本中的内容:

当绿色标志点击时,显示|  当我收到

WHEN GREEN FLAG CLICKED脚本在项目启动时显示精灵.另外两个都是从我收到的帽子块开始的,它是如何收听广播的.它会监听这两条消息,如果它是正确的消息,它会显示出来.如果它是错误的,它会隐藏.

从那些,推断到其他两个精灵 - 它是完全相同的代码,但相反.

这是最简单的方法,也是一种有效的方式,也是初学者最好的方式.但是,如果你处于略高的水平,那么使用变量会更好.

4个精灵,4个脚本,26个街区.使用变量.

现在我们将设置一个变量,而不是广播.查找块时,可以在"数据"部分中找到变量.

等等 - 究竟什么变量?
变量就像一个盒子,暂时保存你放入的内容.你可以把任何字符串放在一个变量中 - 数字,字母,混合......

因此我们的变量将被命名为"WhichSpriteShows",我们将使用此框来存储精灵应该显示的数据.

进入代码,回顾广播.现在我们将设置变量,而不是按钮广播.

所以这就是GoboButton现在正在做的事情:

当这个SPRITE点击时,将

该按钮不再广播消息; 现在,它只是改变了框中的内容.

所以现在,我们不再让Gobo听广播,而是让Gobo注意变量的设置 - 盒子里有什么.

这就是Gobo里面的内容:

当绿色标记点击时,将

哇,哇,哇.你可能会问,FOREVER有什么用.为什么我们首先将WhichSpriteShows设置为0?如果变量被设置为"Gobo"以外的任何内容,为什么不隐藏精灵,方法是在IF ...,ELSE块的ELSE部分插入一个普通的HIDE块,而不是执行看似冗余的检查以查看它是否设置为"刮"?

FOREVER是必要的,因此脚本总是在监听变量的当前状态.

决定在开始时将"WhichSpriteShows"设置为"0",以及额外检查以确定它是否设置为特定的ELSE,以便在点击绿色标记时两个精灵都将显示在开头.如果您不想这样,您可以相应地修改代码:)

与广播一样,为Scratch sprites推断.


奖金

现在......如果你想变得非常花哨,并且使用更少的精灵,那么总共只有两个精灵可以做到这一点.克隆的魔力.我不打算在这里解释太多,因为一切都应该是相对自我解释的,如果你正在做我告诉你的最复杂的方式,那么你必须要么已经是Scratcher,要么想要破解它们.

2个精灵,3个脚本,61个街区.使用克隆.

要了解其工作原理,您需要了解舞台的设置方式:

左边是抓猫,右边是Gobo,按钮上面是Scratch猫,底部是Gobo按钮

按钮精灵的脚本相对简单:

在此输入图像描述

精灵的脚本也不是太疯狂了:

在此输入图像描述

如果你愿意,你可以在这里玩我曾经做过的项目.