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

Spriteクラス

このページでは、Spriteクラスについて説明します。

Spriteとは?

Spriteクラスは、各DisplayObjectインスタンスのコンテナです。また、Graphicsクラスのインタフェースを持ち、各ベクターグラフィックを描画することができます。

インスタンスの自動追加に関する注意点

Spriteのインスタンスは自動的にステージに追加されます(add_childなどの関連インタフェースを呼び出す必要はありません)。一方で、もし他のインスタンスにSpriteのインスタンスを追加したいと場合、手動で add_child メソッドを呼び出す必要があります。

graphics属性のインタフェース

Spriteクラスのインスタンスはgraphics属性を持っており、それを使って各ベクターグラフィックを描画することができます。例えば以下のコードでは水色の四角を描画します。

import apysc as ap

ap.Stage(
    background_color=ap.Color("#333"),
    stage_width=150,
    stage_height=150,
    stage_elem_id="stage",
)

sprite: ap.Sprite = ap.Sprite()
sprite.graphics.begin_fill(color=ap.Color("#0af"))
sprite.graphics.draw_rect(x=50, y=50, width=50, height=50)

ap.save_overall_html(dest_dir_path="sprite_graphics_attribute/")

詳細は以下のGraphicsクラスの関連ドキュメントをご覧ください。

DisplayObjectの複数のインスタンスの移動について

Spriteクラスはコンテナであり、その座標を移動させると同時に子のインスタンスの座標も変更されます。例えば以下のコードでは四角をクリックするとSpriteのy座標が変化します(子の各四角形が一通り移動します)。

import apysc as ap


def on_sprite_click(e: ap.MouseEvent[ap.Sprite], options: dict) -> None:
    """
    The handler that the sprite calls when clicked.

    Parameters
    ----------
    e : MouseEvent
        Event instance.
    options : dict
        Optional arguments dictionary.
    """
    sprite: ap.Sprite = e.this
    sprite.y += 50


ap.Stage(
    background_color=ap.Color("#333"),
    stage_width=250,
    stage_height=250,
    stage_elem_id="stage",
)

sprite: ap.Sprite = ap.Sprite()
sprite.graphics.begin_fill(color=ap.Color("#0af"))
sprite.graphics.draw_rect(x=50, y=50, width=50, height=50)
sprite.graphics.draw_rect(x=150, y=50, width=50, height=50)
sprite.click(on_sprite_click)

ap.save_overall_html(dest_dir_path="sprite_move_instances_simultaneously/")

以降のページではadd_childのインターフェースなど、Spriteクラスの他のインターフェースについて説明していきます。

関連資料

SpriteクラスのコンストラクタAPI

特記事項: このAPIドキュメントはドキュメントビルド用のスクリプトによって自動で生成・同期されています。そのためもしかしたらこの節の内容は前節までの内容と重複している場合があります。

[インターフェイスの構造] __init__(self, *, variable_name: str = '', variable_name_suffix: str = '') -> None


[インターフェイス概要]

親になることの出来る基本的な表示用のオブジェクトを作成します。


[引数]

  • variable_name: str, default ‘

    • このインスタンスの(JavaScript上などで使われる)変数名の設定値。apyscの内部実装でSpriteクラスのサブクラスをインスタンス化する時以外は設定は不要です。

  • variable_name_suffix: str, default “”

    • JavaScript上の変数のサフィックスの設定です。この設定はJavaScriptのデバッグ時に役立つことがあります。


[コードサンプル]

>>> import apysc as ap
>>> stage: ap.Stage = ap.Stage()
>>> sprite_1: ap.Sprite = ap.Sprite()
>>> # Create the sprite child rectangle
>>> sprite_1.graphics.begin_fill(color=ap.Color("#0af"))
>>> rect: ap.Rectangle = sprite_1.graphics.draw_rect(
...     x=50, y=50, width=50, height=50
... )
>>> sprite_1.graphics.contains(rect)
Boolean(True)

>>> # Move the created rectangle to the other sprite
>>> sprite_2: ap.Sprite = ap.Sprite()
>>> sprite_2.add_child(rect)
>>> sprite_1.graphics.contains(rect)
Boolean(False)

>>> sprite_2.contains(rect)
Boolean(True)

>>> # Move the sprite container
>>> sprite_2.x = ap.Number(50)
>>> sprite_2.x
Number(50.0)