Кнопка#

Введение#

Класс button является производным классом от класса controller. Он предоставляет доступ к состояниям кнопок контроллера и обратным вызовам событий кнопок.

Доступ к объекту кнопки button осуществляется через объект контроллера controller . Он не создается напрямую.

Передняя и верхняя стороны контроллера 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()

Кнопка А.

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.

Примечания#

  • Перед использованием функции-члена button , создайте объект контроллера controller.

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

Функции участников#

Класс button включает следующие функции-члены:

Геттер — Считывает состояние кнопки.

  • pressing — Возвращает значение, указывающее, нажата ли кнопка.

Обратные вызовы — Запускают функции при возникновении событий нажатия кнопки.

  • pressed — Регистрирует функцию, которая будет выполняться при нажатии кнопки.

  • released — Регистрирует функцию, которая будет выполняться при отпускании кнопки.

Геттер#

pressing#

Нажатие клавиши pressing возвращает значение, указывающее, нажата ли кнопка в данный момент.

Доступная функция

bool pressing() const;

Параметры

Эта функция не имеет параметров.

Возвращаемая стоимость

Возвращает логическое значение.

  • true — Кнопка нажата.

  • false — Кнопка не нажата.

Пример

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

  wait(20, msec);
}

Обратные звонки#

pressed#

pressed регистрирует функцию, которая выполняется при нажатии кнопки.

Доступная функция

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

Параметр

Тип

Описание

callback

void (*)(void)

Функция, которая выполняется при нажатии кнопки.

Возвращаемая стоимость

Эта функция не возвращает значения.

Пример

Определите функцию обратного вызова вне блока main.

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

Зарегистрируйте функцию обратного вызова внутри main.

int main() {
  vexcodeInit();

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

released#

released регистрирует функцию, которая выполняется при отпускании кнопки.

Доступная функция

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

Параметр

Тип

Описание

callback

void (*)(void)

Функция, которая выполняется при отпускании кнопки.

Возвращаемая стоимость

Эта функция не возвращает значения.

Пример

Определите функцию обратного вызова вне блока main.

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

Зарегистрируйте функцию обратного вызова внутри main.

int main() {
  vexcodeInit();

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