【问题标题】:Is it possible to wait for either button A or button B?是否可以等待按钮 A 或按钮 B?
【发布时间】:2022-01-22 05:31:00
【问题描述】:

这是等待来自按钮 A 的事件的代码。

control.waitForEvent(Button.A, EventBusValue.MICROBIT_EVT_ANY)

我想等待按钮 A 或按钮 B 被按下。

这可能吗?

编辑

我知道在Scratch 中可以使用button.any 之类的东西,上面的代码也是用microjavascript 编写的,但它在micropython 中的编写方式类似,所以也许这个领域的人也可以提供帮助.谢谢。

【问题讨论】:

    标签: micropython mit-scratch bbc-microbit


    【解决方案1】:

    查看使用https://makecode.microbit.org 中的“on event from”块生成的 python 代码。此块可以在“高级”选项卡下找到。该块可以设置为等待按钮 A 或 B 被按下。本例生成的micropython代码为:

    control.on_event(EventBusSource.MICROBIT_ID_BUTTON_AB,
        EventBusValue.MICROBIT_EVT_ANY,
        on_microbit_id_button_ab_evt) 
    

    也可以在编辑器中查看等效的 JavaScript 代码。

    【讨论】:

    • 什么是on_microbit_id_button_ab_evt
    【解决方案2】:

    我能做到的最好方法是使用普通的function for A nad B,在按下按钮的事件时调用,例如:

    input.onButtonPressed(Button.A, function () {
        qAndA(true)
    })
    input.onButtonPressed(Button.B, function () {
        qAndA(false)
    })
    

    真假不是最好的实现,但要知道按下了哪个按钮,我需要为A传递true,为B传递false

    在我的情况下这是必需的,因为我正在编写测试,稍后在此功能中我会比较按下的按钮和实际正确答案。该函数(没有我的完整实现)如下所示:

    function qAndA(aOrB: boolean) {
        if (text_list.length == 0) {
            basic.showNumber(count)
            basic.pause(2000)
            basic.showLeds(`
                # # # # #
                . . # . .
                . . # . .
                . . # . .
                . . # . .
                `)
        }
        if (text_list[0] == Q1 && aOrB == true) {
            ...
        }
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 2023-03-09
      • 2013-08-02
      • 2013-07-21
      • 1970-01-01
      • 2021-12-07
      • 2015-07-12
      相关资源
      最近更新 更多