Events 设置变量在消息处理程序中不起作用

Events 设置变量在消息处理程序中不起作用,events,mit-scratch,Events,Mit Scratch,我想我错过了一些东西。我有一个非常简单的例子,我想用flag作为信号量。如果我按[green flag],将值设置回0就可以了。如果我按[space],则在播放声音后不会设置标志。我是不是遗漏了什么?消息处理程序内部发生了什么?它是否被下一次调用消息处理程序所超越 问题在于如何调用消息 我对你的代码做了这个测试 当循环触发消息时,计数器将递增,显示触发次数 我做的第一次棒压机“测试”增加到4000多台。换句话说,该消息被触发了4000多次!我打字很慢,但事情很快 现在看来,在Scratch中,

我想我错过了一些东西。我有一个非常简单的例子,我想用flag作为信号量。如果我按[green flag],将值设置回0就可以了。如果我按[space],则在播放声音后不会设置标志。我是不是遗漏了什么?消息处理程序内部发生了什么?它是否被下一次调用消息处理程序所超越


问题在于如何调用消息

我对你的代码做了这个测试

当循环触发消息时,计数器将递增,显示触发次数

我做的第一次棒压机“测试”增加到4000多台。换句话说,该消息被触发了4000多次!我打字很慢,但事情很快

现在看来,在Scratch中,每条消息广播都会中断前一条消息。由于“播放声音”需要执行很长时间,因此消息1永远不会在没有中断的情况下结束,最终指令永远不会执行,并且flag2没有设置为0

有几种变通方法:

将标志设置置于if范围之外。当第二条消息中断第一条消息并运行时,它会将标志置零

使用“和等待”确保当前消息未被新消息中断。因此,如果没有中断,消息将完全执行

避免发送消息。使用scratch自己的事件循环。你真的需要一次按键就能触发4000条以上的信息吗?让Scratch按自己的方式处理事件