※この翻訳ドキュメントはスクリプトによって出力・同期されています。内容が怪しそうな場合はGitHubにissueを追加したり英語の原文の確認をお願いします。

各アニメーションのインターフェイスの返却値

このページではanimation_moveなどの各アニメーションのインターフェイスの返却値について説明します。

各インターフェイスはAnimationBaseのサブクラスのインスタンスを返却します

各アニメーション関係のインターフェイスはAnimationBaseのサブクラスのインスタンスを返却します。例えばanimation_moveインターフェイスであればAnimationMoveクラスのインスタンスを返却し、animation_xであればAnimationXクラスのインスタンスを返却します。

AnimationBaseクラスはアニメーションの開始用のstartメソッドやアニメーション終了時のイベント登録用のanimation_completeメソッドなどの基本的な共通のアニメーション関係のインターフェイスを持っています。

基本的な使い方

返却された各値のクラスはapyscのパッケージに含まれています(例: ap.AnimationMoveなど)。そのためそれらを使用して型アノテーションを行うことができます。

以下のコード例ではanimation_xメソッドを使用しており、返却値としてAnimationXクラスのインスタンスを受け取っています。加えてAnimationXクラスのインスタンスを参照してアニメーション完了時のイベントを設定したりアニメーションを開始したり等を行っています。

import apysc as ap

DURATION: int = 1000


def on_animation_complete_1(e: ap.AnimationEvent[ap.Rectangle], options: dict) -> None:
    """
    The handler that the animation calls when its end.

    Parameters
    ----------
    e : ap.AnimationEvent
        Event instance.
    options : dict
        Optional arguments dictionary.
    """
    rectangle: ap.Rectangle = e.this.target
    animation_x: ap.AnimationX = rectangle.animation_x(x=50, duration=DURATION)
    animation_x.animation_complete(on_animation_complete_2)
    animation_x.start()


def on_animation_complete_2(e: ap.AnimationEvent[ap.Rectangle], options: dict) -> None:
    """
    The handler that the animation calls when its end.

    Parameters
    ----------
    e : ap.AnimationEvent
        Event instance.
    options : dict
        Optional arguments dictionary.
    """
    rectangle: ap.Rectangle = e.this.target
    animation_x: ap.AnimationX = rectangle.animation_x(x=100, duration=DURATION)
    animation_x.animation_complete(on_animation_complete_1)
    animation_x.start()


ap.Stage(
    stage_width=200,
    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)
animation_x: ap.AnimationX = rectangle.animation_x(x=100, duration=DURATION)
animation_x.animation_complete(on_animation_complete_1)
animation_x.start()

ap.save_overall_html(dest_dir_path="./animation_return_value_basic_usage/")