Кнопка#

Введение#

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

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

Передняя и задняя стороны контроллера V5 с кнопками, выделенными желтым цветом. На поверхности контроллера слева расположены кнопки со стрелками вверх, вниз, влево и вправо, а справа — кнопки X, A, B, Y по часовой стрелке, начиная с положения «12 часов». На задней стороне контроллера слева и справа расположены кнопки 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.

ButtonX

Controller.ButtonX.pressing()

Кнопка X.

ButtonY

Controller.ButtonY.pressing()

Кнопка Y.

ButtonDown

Controller.ButtonDown.pressing()

Кнопка Вниз.

ButtonUp

Controller.ButtonUp.pressing()

Кнопка Вверх.

ButtonLeft

Controller.ButtonLeft.pressing()

Левая кнопка.

ButtonRight

Controller.ButtonRight.pressing()

Правая кнопка.

ButtonL1

Controller.ButtonL1.pressing()

Кнопка L1.

ButtonL2

Controller.ButtonL2.pressing()

Кнопка L2.

ButtonR1

Controller.ButtonR1.pressing()

Кнопка R1.

ButtonR2

Controller.ButtonR2.pressing()

Кнопка R2.

Примечания#

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

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

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

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

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

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

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

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

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

Геттер#

нажимая#

Нажатие клавиши 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 регистрирует функцию, которая выполняется при нажатии кнопки.

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

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

Параметр

Тип

Описание

callback

void (*)(void)

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

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

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

Пример

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

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

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

int main() {
  vexcodeInit();

  // Run driveForward when A is pressed
  Controller.ButtonA.pressed(driveForward);
}

выпущенный#

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

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

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

Параметр

Тип

Описание

callback

void (*)(void)

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

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

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

Пример

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

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

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

int main() {
  vexcodeInit();

  // Run stopDriving when A is released
  Controller.ButtonA.released(stopDriving);
}