按钮#

介绍#

The button class is a derived class of the controller class. It provides access to controller button states and button event callbacks.

A button object is accessed through a controller object. It is not constructed directly.

EXP 控制器的正面和顶部,摇杆、方向键和动作键以黄色高亮显示。控制器表面左右两侧各有两个摇杆,左侧有上下方向键,右侧有 A 键和 B 键。控制器顶部左侧有 L1 键和 L2 键,右侧有 R1 键和 R2 键。

使用权#

The controller class provides the following button objects. Each object is an instance of the button class.

目的

用法示例

描述

ButtonA

Controller.ButtonA.pressing()

A 键。

ButtonB

Controller.ButtonB.pressing()

B 键。

ButtonDown

Controller.ButtonDown.pressing()

向下按钮。

ButtonUp

Controller.ButtonUp.pressing()

向上按钮。

ButtonL1

Controller.ButtonL1.pressing()

L1 按钮。

ButtonL2

Controller.ButtonL2.pressing()

L2 按钮。

ButtonL3

Controller.ButtonL3.pressing()

L3 按钮。

ButtonR1

Controller.ButtonR1.pressing()

R1按钮。

ButtonR2

Controller.ButtonR2.pressing()

R2 按钮。

ButtonR3

Controller.ButtonR3.pressing()

R3按钮。

笔记#

  • Before using a button member function, create a controller object.

// Create a controller object
controller Controller = controller();

成员功能#

The button class includes the following member functions:

Getter — 读取按钮状态。

  • pressing — Returns whether the button is being pressed.

回调函数——当按钮事件发生时运行的函数。

  • pressed — Registers a function to run when the button is pressed.

  • released — Registers a function to run when the button is released.

Getter#

pressing#

pressing returns whether the button is currently being pressed.

可用功能

bool pressing() const;

参数

此函数没有参数。

返回值

返回布尔值。

  • true — The button is being pressed.

  • false — The button is not being pressed.

例子

// Turn right while L1 is pressed
while (true) {
  if (Controller.ButtonL1.pressing()) {
    Drivetrain.turn(right);
  }
  else {
    Drivetrain.stop();
  }

  wait(20, msec);
}

回调函数#

pressed#

pressed registers a function that runs when the button is pressed.

可用功能

void pressed(void (* callback)(void)) const;

范围

类型

描述

callback

void (*)(void)

按钮按下时运行的函数。

返回值

此函数不返回值。

例子

Define the callback function outside of main.

// Drive forward when R1 is pressed
void driveForward() {
  Drivetrain.driveFor(forward, 200, mm);
}

Register the callback inside main.

int main() {
  vexcodeInit();

  // Run driveForward when R1 is pressed
  Controller.ButtonR1.pressed(driveForward);
}

released#

released registers a function that runs when the button is released.

可用功能

void released(void (* callback)(void)) const;

范围

类型

描述

callback

void (*)(void)

按钮释放时运行的函数。

返回值

此函数不返回值。

例子

Define the callback function outside of main.

// Stop the drivetrain when R1 is released
void stopDriving() {
  Drivetrain.stop();
}

Register the callback inside main.

int main() {
  vexcodeInit();

  // Run stopDriving when R1 is released
  Controller.ButtonR1.released(stopDriving);
}