Кнопка#

Введение#

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

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

Вид спереди и сзади контроллера IQ 2-го поколения, все кнопки выделены желтым цветом. На поверхности контроллера расположены две кнопки джойстика в верхнем левом и правом углах: E вверх и вниз под левым джойстиком и F вверх и вниз под правым. На задней стороне контроллера расположены кнопки L вверх и вниз и R вверх и вниз соответственно слева и справа.

Доступ#

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

Объект

Пример использования

Описание

ButtonEDown

Controller.ButtonEDown.pressing()

Кнопка E ▼.

ButtonEUp

Controller.ButtonEUp.pressing()

Кнопка E ▲.

ButtonFDown

Controller.ButtonFDown.pressing()

Кнопка F ▼.

ButtonFUp

Controller.ButtonFUp.pressing()

Кнопка F ▲.

ButtonL3

Controller.ButtonL3.pressing()

Кнопка левого джойстика. Только для контроллера IQ (2-го поколения).

ButtonLDown

Controller.ButtonLDown.pressing()

Кнопка L ▼.

ButtonLUp

Controller.ButtonLUp.pressing()

Кнопка L ▲.

ButtonR3

Controller.ButtonR3.pressing()

Кнопка правого джойстика. Только для контроллера IQ (2-го поколения).

ButtonRDown

Controller.ButtonRDown.pressing()

Кнопка R ▼.

ButtonRUp

Controller.ButtonRUp.pressing()

Кнопка R ▲.

Примечания#

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

  • Кнопки ButtonL3 и ButtonR3 доступны только на контроллере IQ (2-го поколения).

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

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

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

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

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

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

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

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

Геттер#

pressing#

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

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

bool pressing() const;

Параметры

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

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

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

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

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

Пример

// Turn right while R Up is pressed
while (true) {
  if (Controller.ButtonRUp.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 F Up is pressed
void driveForward() {
  Drivetrain.driveFor(forward, 100, mm);
}

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

int main() {
  vexcodeInit();

  // Run driveForward when F Up is pressed
  Controller.ButtonFUp.pressed(driveForward);
}

released#

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

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

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

Параметр

Тип

Описание

callback

void (*)(void)

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

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

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

Пример

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

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

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

int main() {
  vexcodeInit();

  // Run stopDriving when F Up is released
  Controller.ButtonFUp.released(stopDriving);
}