Sprite class

This page explains the Sprite class.

What is the Sprite?

The Sprite class is the container of each DisplayObject instance. It also has the Graphics class interfaces and can draw each vector graphic.

Note for the automated addition

The Sprite instance is automated added to the stage (no need to call add_child or other related interfaces). However, suppose you want to add to the other instance. In that case, you need to call the add_child method manually.

graphics attribute interfaces

The Sprite instance has the graphics attribute, and you can draw each vector graphic with it. For example, the following code draws the cyan color rectangle.

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/")

For more details, please see the Graphics related documents, for example:

Move DisplayObject instances simultaneously

The Sprite class is a container, and if you move that coordinates, it changes children’s coordinates simultaneously. For example, the following code changes the sprite y-coordinate when clicking the rectangle.

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/")

The subsequent pages explain the other interfaces, such as the add_child interface.

See also

Sprite class 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, *, variable_name: str = '', variable_name_suffix: str = '') -> None


[Interface summary]

Create a basic display object that can be a parent.


[Parameters]

  • variable_name: str, default ‘

    • Variable name of this instance. A js expression uses this setting. It is unnecessary to specify any string except when instantiating the Sprite subclass.

  • variable_name_suffix: str, default “”

    • A JavaScript variable name suffix string. This setting is sometimes useful for JavaScript debugging.


[Examples]

>>> 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)