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

DisplayObject と GraphicsBase クラスの基本的な属性の概要

このページではDisplayObjectGraphicsBaseの各サブクラスのxやvisibleなどの基本的な属性の概要について説明します。

それらの属性でapyscができること

  • xやy, visibleなどの属性の取得や更新を行うことができます。

x と y 属性

xとy属性ではXとY座標を更新・取得することができます。

コードブロックを表示:
from typing_extensions import TypedDict

import apysc as ap


class RectOptions(TypedDict):
    rectangle: ap.Rectangle
    direction: ap.Int


def on_timer(e: ap.TimerEvent, options: RectOptions) -> None:
    """
    The handler that the timer calls.

    Parameters
    ----------
    e : ap.TimerEvent
        Event instance.
    options : RectOptions
        Optional arguments dictionary.
    """
    rectangle: ap.Rectangle = options["rectangle"]
    direction: ap.Int = options["direction"]
    rectangle.x += direction
    rectangle.y += direction

    with ap.If(rectangle.x >= 100):
        direction.value = -1
        ap.Return()

    with ap.If(rectangle.x <= 50):
        direction.value = 1
        ap.Return()


ap.Stage(
    background_color=ap.Color("#333"),
    stage_width=200,
    stage_height=200,
    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)

direction: ap.Int = ap.Int(1)
options: RectOptions = {"rectangle": rectangle, "direction": direction}
ap.Timer(on_timer, delay=ap.FPS.FPS_60, options=options).start()

ap.save_overall_html(dest_dir_path="do_and_graphics_base_prop_abstract_x_and_y/")

詳細については以下をご確認ください:

visible 属性

visible属性ではオブジェクトの表示・非表示の属性値を取得・更新することができます。

コードブロックを表示:
from typing_extensions import TypedDict

import apysc as ap


class RectOptions(TypedDict):
    rectangle: ap.Rectangle


def on_timer(e: ap.TimerEvent, options: RectOptions) -> None:
    """
    The handler that the timer calls.

    Parameters
    ----------
    e : ap.TimerEvent
        Event instance.
    options : RectOptions
        Optional arguments dictionary.
    """
    rectangle: ap.Rectangle = options["rectangle"]
    rectangle.visible = rectangle.visible.not_


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"))
rectangle: ap.Rectangle = sprite.graphics.draw_rect(x=50, y=50, width=50, height=50)

options: RectOptions = {"rectangle": rectangle}
ap.Timer(on_timer, delay=1000, options=options).start()

ap.save_overall_html(dest_dir_path="do_and_graphics_base_prop_abstract_visible/")

詳細については以下をご確認ください:

回転の各インターフェイス

rotation_around_center属性、get_rotation_around_pointメソッド、そしてset_rotation_around_pointメソッドでは回転の角度の値の取得と更新を行うことができます。

コードブロックを表示:
from typing_extensions import TypedDict

import apysc as ap


class RectOptions(TypedDict):
    rectangle: ap.Rectangle


def on_timer(e: ap.TimerEvent, options: RectOptions) -> None:
    """
    The handler that the timer calls.

    Parameters
    ----------
    e : ap.TimerEvent
        Event instance.
    options : RectOptions
        Optional arguments dictionary.
    """
    rectangle: ap.Rectangle = options["rectangle"]
    rectangle.rotation_around_center += 1


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

ap.save_overall_html(dest_dir_path="do_and_graphics_base_prop_abstract_rotation/")

詳細については以下をご確認ください:

拡縮の各インターフェイス

scale_x_from_center属性、scale_y_from_center属性、get_scale_x_from_pointメソッド、set_scale_x_from_pointメソッド、get_scale_y_from_pointメソッド、そしてset_scale_y_from_pointメソッドの各インターフェイスでは拡縮の値の取得と更新を行うことができます。

コードブロックを表示:
from typing_extensions import TypedDict

import apysc as ap


class RectOptions(TypedDict):
    rectangle: ap.Rectangle
    scale_value: ap.Number


def on_timer(e: ap.TimerEvent, options: RectOptions) -> None:
    """
    The handler that the timer calls.

    Parameters
    ----------
    e : ap.TimerEvent
        Event instance.
    options : RectOptions
        Optional arguments dictionary.
    """
    rectangle: ap.Rectangle = options["rectangle"]
    scale_value: ap.Number = options["scale_value"]
    rectangle.scale_x_from_center += scale_value
    rectangle.scale_y_from_center += scale_value

    with ap.If(rectangle.scale_x_from_center >= 2.0):
        scale_value.value = -0.01
        ap.Return()

    with ap.If(rectangle.scale_y_from_center <= 0.5):
        scale_value.value = 0.01
        ap.Return()


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"))
rectangle: ap.Rectangle = sprite.graphics.draw_rect(x=50, y=50, width=50, height=50)

scale_value: ap.Number = ap.Number(0.01)
options: RectOptions = {"rectangle": rectangle, "scale_value": scale_value}
ap.Timer(on_timer, delay=ap.FPS.FPS_60, options=options).start()

ap.save_overall_html(dest_dir_path="do_and_graphics_base_prop_abstract_scale/")

詳細については以下をご確認ください:

反転の各属性

flip_xflip_yの属性では反転の属性値の取得と更新を行うことができます。

コードブロックを表示:
from typing_extensions import TypedDict

import apysc as ap


class LineOptions(TypedDict):
    line: ap.Line


def on_timer(e: ap.TimerEvent, options: LineOptions) -> None:
    """
    The handler that the timer calls.

    Parameters
    ----------
    e : ap.TimerEvent
        Event instance.
    options : LineOptions
        Optional arguments dictionary.
    """
    line: ap.Line = options["line"]
    line.flip_x = line.flip_x.not_


ap.Stage(
    background_color=ap.Color("#333"),
    stage_width=150,
    stage_height=150,
    stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
sprite.graphics.line_style(color=ap.Color("#fff"), thickness=5)
line: ap.Line = sprite.graphics.draw_line(x_start=50, y_start=50, x_end=100, y_end=100)

options: LineOptions = {"line": line}
ap.Timer(on_timer, delay=1000, options=options).start()

ap.save_overall_html(dest_dir_path="do_and_graphics_base_prop_abstract_flip/")

詳細については以下をご確認ください:

歪みの各属性

skew_xskew_yの各属性では歪みの値を取得・更新することができます。

コードブロックを表示:
from typing_extensions import TypedDict

import apysc as ap


class RectOptions(TypedDict):
    rectangle: ap.Rectangle


def on_timer(e: ap.TimerEvent, options: RectOptions) -> None:
    """
    The handler that the timer calls.

    Parameters
    ----------
    e : ap.TimerEvent
        Event instance.
    options : RectOptions
        Optional arguments dictionary.
    """
    rectangle: ap.Rectangle = options["rectangle"]
    rectangle.skew_x += 1


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

ap.save_overall_html(dest_dir_path="do_and_graphics_base_prop_abstract_skew/")

詳細については以下をご確認ください:

関連資料