【发布时间】:2018-05-29 04:24:51
【问题描述】:
我正在尝试编写一个临时代码,其中在一个按钮上按下一个特定的精灵将显示,在另一个按钮按下另一个精灵将显示,第一个应该消失。
我想知道这里应该使用的scratch的基本特征。
【问题讨论】:
-
您可能正在寻找广播:en.scratch-wiki.info/wiki/Broadcast
标签: mit-scratch
我正在尝试编写一个临时代码,其中在一个按钮上按下一个特定的精灵将显示,在另一个按钮按下另一个精灵将显示,第一个应该消失。
我想知道这里应该使用的scratch的基本特征。
【问题讨论】:
标签: mit-scratch
有几种不同的方法可以做到这一点。有一些方法可以使用更少的脚本或更少的精灵,并使用不同的方法。这里有两种方法,展示了两种不同的方法,最后还有一个奖励。
让我们从最简单的方法开始。
4 个精灵,8 个脚本,16 个块。使用广播。
在此,我们将使用四个精灵:
我们有一个 Scratch 精灵、一个 Gobo 精灵、一个 ShowGoboButton 精灵和一个 ShowScratchButton 精灵。
这些精灵中的每一个都有脚本。
对于在按下按钮时显示和消失的两个精灵 - Gobo 和 Scratch - 我们需要让它们在事件发生时显示和消失 - 当单击按钮时。因此,单击按钮时需要发生一些事情。我们如何做到这一点?使用 WHEN THIS SPRITE CLICKED 块。将它与另一个块 BROADCAST 块结合使用,我们可以让它在按下时做一些事情。
这就是 ShowGoboButton 精灵在其脚本中的内容:
当按钮被点击时,它会广播一条消息……但此刻,它正在向虚空广播。没有人在收听广播。 Gobo(和 Scratch)精灵需要监听广播,然后根据听到的内容显示或隐藏。
这就是 Gobo 隐藏在脚本中的内容:
WHEN FLAG CLICKED 脚本在项目启动时显示精灵。另外两个都以 WHEN I RECEIVE 帽子块开头,是它监听广播的方式。它监听两条消息,如果它是正确的,它就会显示。如果是错误的,它会隐藏。
根据这些,推断其他两个精灵 - 它是完全相同的代码,但相反。
这是最简单的方法,也是一种有效的方法,也是初学者最好的方法。但是,如果您的级别稍高,那么使用变量会更好。
4 个精灵,4 个脚本,26 个块。使用变量。
现在我们将设置一个变量,而不是广播。查找块时,可以在数据部分找到变量。
等等 - 到底是什么变量?
变量就像一个盒子,它暂时保存你放入其中的内容。您可以将任何字符串放入变量中 - 数字、字母、混合...
所以我们的变量将被命名为“WhichSpriteShows”,我们将使用这个框来存储精灵应该显示的数据。
进入代码,回顾一下广播。现在我们将设置一个变量,而不是广播按钮。
这就是 GoboButton 现在正在做的事情:
按钮不再广播消息;现在,它只是改变了盒子里的东西。
所以现在,我们让 Gobo 关注变量设置的内容,而不是让 Gobo 收听广播。
这就是 Gobo 里面的东西:
哇,哇,哇。你可能会问,FOREVER 是怎么回事。为什么我们一开始将 WhichSpriteShows 设置为 0?如果变量设置为“Gobo”以外的任何内容,为什么不通过在 IF...、ELSE 块的 ELSE 部分粘贴一个普通的 HIDE 块来隐藏精灵,而不是执行看似多余的检查以查看它是否设置为“从头开始”?
FOREVER 是必需的,以便脚本始终在监听以查看变量的当前状态。
在开始时将“WhichSpriteShows”设置为“0”的决定,以及额外检查以查看它是否设置为特定的 ELSE,以便在单击绿色标志时两个精灵都将在开始时显示.如果你不想这样,你可以相应地修改代码:)
与广播一样,推断 Scratch 精灵。
奖金
现在...如果您想真正变得花哨,并使用更少的精灵,总共只需要两个精灵就可以做到。克隆人的魔力。我不会在这里解释太多,因为一切都应该是相对不言自明的,如果你正在做我告诉你的最复杂的方式,那么你必须要么已经是 Scratcher,要么想要破坏东西。
2 个精灵,3 个脚本,61 个方块。使用克隆。
要了解这是如何工作的,您需要了解舞台是如何设置的:
按钮精灵的脚本比较简单:
而且精灵的脚本也不是太疯狂:
如果你愿意,你可以在 here 上玩我用来制作这个的项目。
【讨论】:
【讨论】: