在 applab 中调试问题

debugging issues inside applab

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

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

some of the onEvent lines of my code keep repeating even though I do not have a loop there

答案可以在这个Code.org forum thread中找到。关键语句是:

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

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