活动#

介绍#

事件允许您使用事件对象并行运行函数。无需逐个调用函数或线程,事件允许您注册函数,然后一次性触发所有函数。每个注册函数都在其自己的线程中运行,因此您的机器人可以同时执行多项操作,例如闪烁 TouchLED 和驾驶。

以下是可用方法和构造函数的列表:

  • Event – Creates a new event object.

  • broadcast – Triggers all registered functions in an event object to run in parallel.

  • broadcast_and_wait – Triggers all registered functions in an event object and waits for them to finish before continuing.

  • event – Registers a function to the event object, optionally with arguments.

Create an Event Object#

Event 构造函数用于创建一个事件对象,该对象在单独的线程中管理函数执行。

用法:
Event()

范围

描述

此构造函数没有参数。

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    # Creating the move_event Event
    move_event = Event()
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

Broadcast#

broadcast 触发一个事件,在单独的线程中启动所有已注册的函数。此方法不会暂停任何后续函数的执行。

用法:
event.broadcast()

范围

描述

event

先前创建的事件对象的名称。

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    move_event = Event()
    move_event(move_square)
    # Broadcasting the move_event Event
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

Broadcast and wait#

broadcast_and_wait 启动一个事件,但等待所有已注册的函数完成后再继续后续函数。

用法:
event.broadcast_and_wait()

范围

描述

event

先前创建的事件对象的名称。

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    # Set up and call the move_square event
    move_event = Event()
    move_event(move_square)
    # Broadcast the move_event Event and wait
    move_event.broadcast_and_wait()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)

Register Functions to an Event#

当您将一个函数注册到某个事件时,它将在事件广播时在单独的线程中执行。

Usage:
event(callback, args)

范围

描述

event

先前创建的事件对象的名称。

callback

先前定义的在事件广播时执行的函数。

args

Optional. A tuple containing arguments to pass to the callback function. See Using Functions with Parameters for more information.

# Build Used: Super Code Base 2.0
def move_square():
    for index in range(4):
        drivetrain.drive_for(FORWARD, 150)
        drivetrain.turn_for(RIGHT, 90)

def main():
    move_event = Event()
    # Register the move_square function to the move_event Event
    move_event(move_square)
    move_event.broadcast()
    bumper.set_color(GREEN)

# Start threads — Do not delete
start_thread(main)