Loops 可断环在划痕?

Loops 可断环在划痕?,loops,mit-scratch,Loops,Mit Scratch,如何在Scratch中制作一个易碎的环?我使用的是Scratch 2.0,无法找到任何好方法从循环本身内部使循环可断。免责声明: 没有完美的方法可以做到这一点。如果你能忍受这个事实,那就继续吧 有几种不同的方法可以做到这一点 使用重复,直到 第一个也是最简单的是: 但从技术上讲,这并不是脚本的一部分——它只是重复,直到某个值返回true 使用自定义块(停止此脚本) 为了在脚本内部完成这项工作,您需要对自定义块使用一个鬼鬼祟祟的小技巧 创建一个名为任意的自定义块,但可能是沿着“易碎循环”的路线

如何在Scratch中制作一个易碎的环?我使用的是Scratch 2.0,无法找到任何好方法从循环本身内部使循环可断。

免责声明: 没有完美的方法可以做到这一点。如果你能忍受这个事实,那就继续吧


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

使用
重复,直到

第一个也是最简单的是:

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

使用自定义块(
停止此脚本
) 为了在脚本内部完成这项工作,您需要对自定义块使用一个鬼鬼祟祟的小技巧

创建一个名为任意的自定义块,但可能是沿着“易碎循环”的路线。在其中,创建以下脚本:

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

使用
广播并等待
您还可以使用广播和等待方法,非常类似于上面所述:

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


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

救命啊!我的项目现在落后了很多! 如前所述,如果您的代码必须在一个框架内运行,您可能会选中在不刷新屏幕的情况下运行。不幸的是,由于Scratch player中的错误,这会导致程序在激活
停止此脚本
块后基本中断。你怎么处理这件事

它遵循的原理与在
永久
循环中使用run With screen refresh自定义块时使用的原理相同-循环不使用屏幕刷新,而内部使用屏幕刷新,允许即时动画,无论是否正在使用

这里有一个例子-图像实在太长,无法嵌入,所以取而代之

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

通过在循环中添加递增循环计数器变量,可以使用“repeat until”来复制“repeat n times”块的函数

通过使用“重复直到”块,仅在中断条件下使用,可以获得与“永久”块等效的块

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

我会发布一个街区的图片,但这是我的第一个回复,网站不允许我


祝您好运

您可以在<代码>重复
的内部或外部创建一个变量,并使您的脚本如下所示:

repeat until [[my variable] = [e.g: 1]]
your code
your code
your code
your code
end of repeat until

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


否则,我认为没有wat可以做到这一点。

使用重复直到块。然后在布尔部分中加入一个equals块或任何内容。然后在重复直到块内,放置一个停止此脚本


希望这对你有所帮助:你可以使用以下几种方法

  • 条件循环

  • 停止此脚本

  • 如果是else,则在else部分中,不输入任何内容


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

您可以用来制作图片。;)问题是,从技术上讲,我们没有从脚本内部打破循环;我们只是循环,直到一些条件返回true。如果中断中间循环很重要(在Scratch中需要一件奇怪的事情),并且循环的最后一次迭代在post-loop块中不可撤消,那么If-stop脚本路径可能是唯一的方法。广播并不好看,但它们会成为我在自定义块上的退路,我发现对一些孩子来说,这些自定义块不太容易解释。哦,是的,现在我觉得没有想到这一点很傻。我确实喜欢这个解决方案。:)你认为你可以分享一些例子吗?“if then else”一词特别有趣,因为我以前没听说过,但是你的答案对有例子的读者来说会有用得多:)请为每种方法添加一个例子