※この翻訳ドキュメントはスクリプトによって出力・同期されています。内容が怪しそうな場合はGitHubにissueを追加したり英語の原文の確認をお願いします。
Timer クラスの delay 設定¶
このページではTimer
クラスのdelay
引数の設定について説明します。
引数の概要¶
delay
引数の設定ではタイマーの間隔を設定できます。この設定はミリ秒単位となり、1000の値を指定すれば1秒ごとの間隔になります。
この引数はint
、float
、Int
、Number
型の値、もしくはFPS
のenumの値を受け付けます。
基本的な使い方¶
Timer
クラスのコンストラクタでdeplay
引数のパラメーターを設定することができます。以下のコード例ではtimer_1
、timer_2
、timer_3
の3つのタイマーを生成し、それぞれdelayの値に100
、33.3333333
、16.6666667
の各値を設定しています。
1番目のタイマー(delay
の値は100)では1秒間に10回ハンドラの呼び出しを行い、2番目のタイマー(delay
の値は33.3333333)では1秒間に30回の呼び出しを行い、3番目のタイマー(delay
の値は16.6666667)では60回の呼び出しを行います。
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/")
delay 引数にFPSのenumの値を設定する¶
delay
の引数にはFPS
(frames per second / 1秒当たりのフレーム数)のenumの値を指定することもできます。例えば、FPS.FPS_60
を指定すれば60FPS相当の実行回数(16.6666667ミリ秒ごとの実行)となります。同様にFPS.FPS_30
を指定すれば30FPS相当(33.3333333ミリ秒ごとの実行)となります。
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/")
関連資料¶
Timer クラスのコンストラクタのAPI¶
特記事項: このAPIドキュメントはドキュメントビルド用のスクリプトによって自動で生成・同期されています。そのためもしかしたらこの節の内容は前節までの内容と重複している場合があります。
[インターフェイスの構造] __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
[インターフェイス概要]
一定間隔ごとにハンドラの関数を実行するためのタイマーのクラスです。
[引数]
handler
: _Handler一定間隔ごとに呼ばれる関数もしくはメソッドのハンドラ。
delay
: Int or int or Number or float or FPSハンドラの実行間隔となるミリ秒もしくはFPSのenumの値。もし
FPS
の値が指定された場合、FPSに応じて計算されたミリ秒が設定されます(例えば、もしFPS_60
が指定されていればdelay
の値は16.6666667ミリ秒相当になります。)。
repeat_count
: Int or intハンドラの実行回数の上限値。ハンドラの実行回数がこの値に到達した場合タイマーは停止します。もし0が指定された場合にはタイマーは停止しなくなります。
options
: dict or None, default Noneハンドラの関数もしくはメソッドへ渡すオプションとしての各パラメーターを格納した辞書。
[コードサンプル]
>>> 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()
[関連資料]
delay 属性のAPI¶
特記事項: このAPIドキュメントはドキュメントビルド用のスクリプトによって自動で生成・同期されています。そのためもしかしたらこの節の内容は前節までの内容と重複している場合があります。
[インターフェイス概要]
遅延(間隔)値を取得します。
[返却値]
delay
: Numberハンドラの実行ごとのミリ秒の間隔値。
[コードサンプル]
>>> 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)