8

你如何在 Scratch 中创建一个可破坏的循环?我正在使用 Scratch 2.0 并且找不到任何从循环本身内部使循环可破坏的好方法。

4

6 回答 6

13

免责声明:

没有完美的方法来做到这一点。如果您可以忍受这个真实的事实,那么请随意继续。


有几种不同的方法可以做到这一点。

repeat until

第一个也是最简单的一个如下:

暂存区

但这在技术上不是脚本的一部分——它只是重复,直到某个值返回 true。

使用自定义块 ( stop this script)

为了在脚本中执行此操作,您需要对自定义块使用一个鬼鬼祟祟的小技巧。

创建一个自定义块,称为任何你想要的 - 但可能沿着“易碎循环”的路线。在其中,创建以下脚本:

暂存区

通过使用stop script,我们打破了当前正在运行的脚本——根据 Scratch 的说法,它是自定义块。

看看结果!(作为暂存块)

broadcast and wait

您还可以使用与上述非常相似的广播等待方法:

暂存区

虽然我强烈建议您不要使用这种方法,但好像任何其他精灵都有可破坏的循环一样,您需要重命名每个精灵,在大量精灵中使用大量循环后,这可能会很乏味!


(请注意,此错误已在编辑器的 442 版本中修复,因此以下内容不再适用。)

帮助!我的项目现在落后了很多!

正如@foi注意到的,如果您的代码必须在框架内运行,您可能会检查在没有屏幕刷新的情况下运行。不幸的是,由于 Scratch 播放器中的一个错误,这会导致程序在stop this script块被激活后基本上中断。你怎么能处理这个?

它遵循您在循环内使用不带屏幕刷新自定义块的运行时使用的相同原则forever- 循环不使用屏幕刷新而内部使用,允许即时动画无论是否使用涡轮模式

这是一个示例 - 图像确实太长而无法嵌入,因此请在此处查看

于 2015-06-06T11:16:42.487 回答
3

您可以在内部或外部创建一个变量repeat,并使您的脚本如下所示:

repeat until [[my variable] = [e.g: 1]]
your code
your code
your code
your code
end of repeat until
于 2015-12-10T18:36:37.147 回答
1

对于“重复直到”块,最简单的方法是“或”您的正常直到条件与直到中的中断条件。

通过在循环中添加递增循环计数器变量,您可以使用“重复直到”来复制“重复 n 次”块的功能

通过使用仅带有中断条件的“重复直到”块,您将获得相当于“永远”块

如果您需要另一个脚本/精灵来触发中断,那么公共变量将允许您从任何地方中断循环,并让单个条件中断不同精灵的循环。

我会发布块的图像,但这是我的第一个回复,网站不会让我回复!

祝你好运

于 2015-06-10T15:18:55.200 回答
1

您可以使用这几种方法来做到这一点...

  • 条件循环

  • 停止这个脚本

  • if then else, 在 else 部分,什么也不放

我更喜欢使用第一种方法,因为它需要更少的块,并且对于第一种方法,您仍然可以添加将在循环停止执行后执行的代码。

于 2019-10-04T13:04:32.253 回答
0

使用重复直到块。然后将等号块或其他任何内容放入布尔部分。然后在重复直到块内,停止这个脚本块。

希望这会有所帮助:D

于 2019-07-30T01:15:28.090 回答
0

您可以让它重复 x 次,或者让它在某个点停止,例如另一个变量发生变化。

否则,我认为没有办法做到这一点。

于 2017-05-09T20:11:14.563 回答