首页 > 解决方案 > applab 中的调试问题

问题描述

我目前正在 appLab 上为我的 CS 期末考试创建一个测验创建者,尽管我的代码中的一些 onEvent 行不断重复,但我的大部分代码都在工作,即使我在那里没有循环。我在我的程序中多次调用了该函数,这可能是它出现故障的原因。我尝试重构代码并将函数拆分为 2 个较小的函数,一个用于处理声明变量,另一个用于对屏幕进行更改。主要问题是 onEvent 循环中的代码在重复,因此我无法添加计数器来计算用户提出的正确或错误问题的数量。我非常困惑,因为过去几天我一直在尝试修复这个错误。首先,它似乎正在工作,但是当您在单击答案之前放慢代码速度时,您会在 onEvent 行中的 quiz 函数中看到问题。非常感谢你帮助我!

如果您想引用代码,这里是我的项目的链接(由于某种原因,代码的格式在堆栈溢出中不起作用) https://studio.code.org/projects/applab/bzlJBCafMhrd-LAGoqro3nXw8hQ7tJBLxj-N3In9kwo`在此处输入代码`

标签: debuggingapp-lab

解决方案


即使我在那里没有循环,我的代码的某些 onEvent 行也会不断重复

答案可以在这个Code.org 论坛帖子中找到。关键声明是:

  • 当您调用 onEvent() 时,它会在后台创建一个新的事件处理程序来响应事件。一旦创建了事件处理程序,就无法摆脱它。当您重新启动游戏时,旧的事件处理程序仍在后台挂起,并创建了新的事件处理程序......

在您的情况下,重新启动游戏意味着只需进入下一个测验屏幕,调用function quiz(),其中您调用 onEvent()。在第二次运行时quiz()创建第二个事件处理程序,因此回调函数被调用两次,在第三轮测验中被调用三次,依此类推。因此,为避免这种情况,不要为同一个 UI 元素事件重复调用 onEvent()。


推荐阅读