Timer class delay setting¶
This page explains the Timer class delay argument setting.
What argument is this?¶
The delay argument setting determines the timer tick interval. This setting is a milliseconds unit, so a value of 1000 ticks every 1 second.
The int, float, Int, Number, and FPS enum can be acceptable.
Basic usage¶
You can set the delay parameter at the Timer class constructor. The following example sets each timer (timer_1, timer_2, timer_3) and passes the delay values of 100, 333.3333333, 16.6666667.
The first-timer (delay is 100) is called 10 times in a second, and the second one (delay is 33.3333333) is 30 times in a second, and the third one (delay is 16.6666667) is 60 times.
from typing_extensions import TypedDict
import apysc as ap
ap.Stage(
    stage_width=350,
    stage_height=150,
    background_color=ap.Color("#333"),
    stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
sprite.graphics.begin_fill(color=ap.Color("#0af"))
rectangle_1: ap.Rectangle = sprite.graphics.draw_rect(x=50, y=50, width=50, height=50)
rectangle_2: ap.Rectangle = sprite.graphics.draw_rect(x=150, y=50, width=50, height=50)
rectangle_3: ap.Rectangle = sprite.graphics.draw_rect(x=250, y=50, width=50, height=50)
class _RectOptions(TypedDict):
    rectangle: ap.Rectangle
def on_timer(e: ap.TimerEvent, options: _RectOptions) -> None:
    """
    The Handler would be called every timer tick.
    Parameters
    ----------
    e : ap.TimerEvent
        Event instance.
    options : dict
        Optional arguments dictionary.
    """
    rectangle: ap.Rectangle = options["rectangle"]
    rectangle.rotation_around_center += 1
options: _RectOptions = {"rectangle": rectangle_1}
timer_1: ap.Timer = ap.Timer(handler=on_timer, delay=100, options=options)
timer_1.start()
options = {"rectangle": rectangle_2}
timer_2: ap.Timer = ap.Timer(handler=on_timer, delay=33.3333333, options=options)
timer_2.start()
options = {"rectangle": rectangle_3}
timer_3: ap.Timer = ap.Timer(handler=on_timer, delay=16.6666667, options=options)
timer_3.start()
ap.save_overall_html(dest_dir_path="timer_delay_basic_usage/")
Set the FPS enum value to the delay argument¶
You can also pass the FPS (frames per second) enum value to the delay argument. For example, if the FPS.FPS_60 is specified, a timer delay becomes 60 frames per second (16.6666667 milliseconds). Likely, the FPS.FPS_30 is specified, a timer delay becomes 30 frames per second (33.3333333 milliseconds).
from typing_extensions import TypedDict
import apysc as ap
ap.Stage(
    stage_width=150,
    stage_height=150,
    background_color=ap.Color("#333"),
    stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
sprite.graphics.begin_fill(color=ap.Color("#0af"))
rectangle: ap.Rectangle = sprite.graphics.draw_rect(x=50, y=50, width=50, height=50)
class _RectOptions(TypedDict):
    rectangle: ap.Rectangle
def on_timer(e: ap.TimerEvent, options: _RectOptions) -> None:
    """
    The Handler would be called every timer tick.
    Parameters
    ----------
    e : ap.TimerEvent
        Event instance.
    options : dict
        Optional arguments dictionary.
    """
    rectangle: ap.Rectangle = options["rectangle"]
    rectangle.rotation_around_center += 1
options: _RectOptions = {"rectangle": rectangle}
timer: ap.Timer = ap.Timer(handler=on_timer, delay=ap.FPS.FPS_60, options=options)
timer.start()
ap.save_overall_html(dest_dir_path="timer_delay_fps_enum/")
See also¶
Timer constructor API¶
Note: the document build script generates and updates this API document section automatically. Maybe this section is duplicated compared with previous sections.
[Interface signature] __init__(self, handler: Callable[[ForwardRef('TimerEvent'), ~_ConstructorOptions], NoneType], *, delay: Union[int, float, apysc._type.number_value_mixin.NumberValueMixIn, apysc._time.fps.FPS], repeat_count: Union[int, apysc._type.int.Int] = 0, options: Union[~_ConstructorOptions, NoneType] = None) -> None
[Interface summary]
Timer class to handle function calling at regular intervals.
[Parameters]
- handler: _Handler- A handler would be called at regular intervals. 
 
- delay: Int or int or Number or float or FPS- A delay between each - Handlercalling in a millisecond or FPS value. If an- FPSvalue is specified, this value becomes a millisecond calculated with that FPS value (e.g., if the- FPS_60value is specified, then- delaybecomes 16.6666667).
 
- repeat_count: Int or int- Max count of a - Handler’s calling. A timer stops if the- Handler’s calling count has reached this value. If 0 is specified, then a timer loops forever.
 
- options: dict or None, default None- Optional arguments dictionary to pass a - Handlercallable.
 
[Examples]
>>> from typing_extensions import TypedDict
>>> import apysc as ap
>>> _ = ap.Stage()
>>> class RectOptions(TypedDict):
...     rectangle: ap.Rectangle
...
>>> def on_timer(e: ap.TimerEvent, options: RectOptions) -> None:
...     rectangle: ap.Rectangle = options["rectangle"]
...     rectangle.x += 1
>>> stage: ap.Stage = ap.Stage()
>>> sprite: ap.Sprite = ap.Sprite()
>>> sprite.graphics.begin_fill(color=ap.Color("#0af"))
>>> rectangle: ap.Rectangle = sprite.graphics.draw_rect(
...     x=50, y=50, width=50, height=50
... )
>>> options: RectOptions = {"rectangle": rectangle}
>>> _ = ap.Timer(on_timer, delay=ap.FPS.FPS_60, options=options).start()
[References]
delay property API¶
Note: the document build script generates and updates this API document section automatically. Maybe this section is duplicated compared with previous sections.
[Interface summary]
Get a delay value.
[Returns]
- delay: Number- A delay value of each - Handlercalling in milliseconds.
 
[Examples]
>>> import apysc as ap
>>> _ = ap.Stage()
>>> def on_timer(e: ap.TimerEvent, options: dict) -> None:
...     pass
>>> timer: ap.Timer = ap.Timer(on_timer, delay=33.3, repeat_count=50)
>>> timer.delay
Number(33.3)
