onBoardEvent(component, event, callback) 主板事件处理器

功能分类: Circuit Applab JavaScript 少儿编程

在编程主板指定 component 组件指定 event 事件触发时,运行 callback 异步回调函数。

使用这个方法,可以让主板上的组件(如左右两个按钮、主板开关、各种传感器)在被操作或状态变化时,触发回调函数。

在 Applab 里,onBoardEvent() 方法的使用方法跟 onEvent() 类似,只是事件处理的对象不同。onEvent() 用于捕捉页面上显示的控件(如文本输入框、按钮等)的事件,而 onBoardEvent() 则用于捕捉 Adafruit Circuit Playground 编程主板上组件(如主板上的左按钮、有按钮、主板开关、声音传感器、光线传感器、温度传感器以及速度传感器)的事件。所有这些组件都有不同的事件类型:


主板组件 组件事件
buttonL/R 左右按钮 pressed - 按下 (按钮被按下), down - 按下 (按钮处于按下状态), up - 放开 (按钮被放开)
toggleSwitch 主板开关 open - 开 (打开状态), closed - 关 (关闭状态)
所有传感器 change - 变化 (每次传感器感应到变化), data - 数据( 传感器感每隔 50 毫秒触发一次)
加速度感应 single tap - 在板旁边检测到轻击时触发,double tap - 仅在板附近检测到彼此在 x 时间之内发生两次轻击时触发

示例代码


示例代码:ButtonL/R 当左按钮按下时蜂鸣器发声,当右按钮按下时声音停止。


// 当左按钮按下时蜂鸣器发声
onBoardEvent(buttonL, "press", function(event) {
  buzzer.note("A4");
});
// 当右按钮按下时声音停止
onBoardEvent(buttonR, "press", function(event) {
  buzzer.stop();
});

示例代码:温度感应 持续获取温度感应数据并显示到页面。


// 持续获取温度感应数据并显示到页面
onBoardEvent(tempSensor, "data", function(event) {
  setNumber("temperature", tempSensor.F);
});


示例代码:主板开关控制红色 LED 灯 使用主板开关控制红色 LED 灯。开关打开时,控制灯关闭;开关关闭时,控制灯打开。


// 使用主板开关控制红色 LED 灯
// 开关打开时,控制灯关闭
onBoardEvent(toggleSwitch, "open", function(event) {
  led.off();
});
// 开关关闭时,控制灯打开
onBoardEvent(toggleSwitch, "close", function(event) {
  led.on();
});

示例代码:光线感应及页面颜色变化 获取光线感应数据,并持续根据感应数据情况,更新页面颜色。


// 获取光线感应数据,并持续根据感应数据情况,更新页面颜色
onBoardEvent(lightSensor, "data", function(event) {
  lightSensor.setScale(0, 255);
  var light1 = lightSensor.value;
  lightSensor.setScale(100, 150);
  var light2 = lightSensor.value;
  lightSensor.setScale(0, 200);
  var light3 = lightSensor.value;
  setProperty("screen1", "background-color", rgb(light1,light2,light3));
});


示例代码:加速感应及 LED 霓虹灯效果 根据检测到的主板状态,设置 LED 霓虹灯显示效果。


// 根据检测到的主板状态,设置 LED 霓虹灯显示效果
var colors = "white";

onBoardEvent(accelerometer, "data", function(event) {
  var pitch = accelerometer.getOrientation("pitch");
  var inclination = accelerometer.getOrientation("inclination");
  var roll = accelerometer.getOrientation("roll");

  //front to back
  if (pitch < -10) {
    colorLeds[0].on();
    colorLeds[9].on();
  }
  if (pitch > 10) {
    colorLeds[4].on();
    colorLeds[5].on();
  }

  //side-to-side
  if (roll > 20) {
    colorLeds[7].on();
  }
  if(roll < -20){
    colorLeds[2].on();
  }
});

语法规则


onBoardEvent(component, event, function(event) {...});

参数说明

名称 类型 必需 参数描述
component string Yes 指定主板组件,如 toggleSwitch、buttonR、buttonL 等。
event string Yes 指定事件类型,如 pressed、up、down等。
callback function Yes 指定事件发生时,要异步执行的回调函数。

提示说明

  • 使用 onEvent() 方法捕捉页面控件事件。

查看更多少儿编程教程、JavaScript 介绍

返回文档首页