※この翻訳ドキュメントはスクリプトによって出力・同期されています。内容が怪しそうな場合はGitHubにissueを追加したり英語の原文の確認をお願いします。
apysc ライブラリが現在の実装でできること¶
このページでは apysc ライブパリの現在の実装と機能の概要について説明します。
Pythonを使って書き、それをHTMLへ出力・もしくはJupyter上で利用する¶
apysc ライブラリではフロントエンドをPythonを使って書くことができ、結果をHTMLに出力したりもしくはJupyter notebookやJupyterLab、Google Colaboratory上などで表示することができます。
参考資料:
様々な種類のベクターグラフィックスの描画¶
apysc ライブラリでは四角や円、線などの様々な種類のベクターグラフィックスの描画を行うことができます。
コードブロックを表示:
import apysc as ap
ap.Stage(
stage_width=650,
stage_height=210,
background_color=ap.Color("#333"),
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_round_rect(
x=150, y=50, width=50, height=50, ellipse_width=12, ellipse_height=12
)
sprite.graphics.draw_circle(x=275, y=75, radius=25)
sprite.graphics.draw_ellipse(x=375, y=75, width=50, height=30)
sprite.graphics.draw_polygon(
points=[
ap.Point2D(x=475, y=50),
ap.Point2D(x=450, y=100),
ap.Point2D(x=500, y=100),
]
)
sprite.graphics.begin_fill(color=ap.COLORLESS)
sprite.graphics.line_style(color=ap.Color("#eee"), thickness=3)
sprite.graphics.move_to(x=550, y=50)
sprite.graphics.line_to(x=600, y=50)
sprite.graphics.line_to(x=550, y=100)
sprite.graphics.line_to(x=600, y=100)
sprite.graphics.draw_line(x_start=50, y_start=130, x_end=600, y_end=130)
sprite.graphics.draw_dotted_line(
x_start=50, y_start=145, x_end=600, y_end=145, dot_size=2
)
sprite.graphics.draw_round_dotted_line(
x_start=53, y_start=160, x_end=600, y_end=160, round_size=6, space_size=6
)
ap.save_overall_html(dest_dir_path="what_apysc_can_do_draw_vector_graphics/")
参考資料:
各種マウスイベントの設定¶
apysc ライブラリではクリックやマウスダウン、マウスオーバー、マウスムーブなどの各種マウスイベントの設定をサポートしています。
クリックイベントの例(以下の四角をクリックしてご確認ください):
コードブロックを表示:
import apysc as ap
def on_click(e: ap.MouseEvent[ap.Rectangle], options: dict) -> None:
"""
The handler that the rectangle calls when clicked.
Parameters
----------
e : ap.MouseEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
color: ap.Color = e.this.fill_color
condition: ap.Boolean = color == ap.Color("#00aaff")
with ap.If(condition):
e.this.fill_color = ap.Color("#f0a")
with ap.Else():
e.this.fill_color = ap.Color("#0af")
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)
rectangle.click(on_click)
ap.save_overall_html(dest_dir_path="what_apysc_can_do_mouse_event_click/")
参考資料:
タイマーのインターフェイスとアニメーション¶
タイマーに関係したインターフェイスを利用することができ、それを使ってアニメーションを設定することができます。
コードブロックを表示:
from typing_extensions import TypedDict
import apysc as ap
class _Options(TypedDict):
rectangle: ap.Rectangle
alpha_direction: ap.Int
def on_timer(e: ap.TimerEvent, options: _Options) -> None:
"""
The handler that the timer calls.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
rectangle: ap.Rectangle = options["rectangle"]
alpha_direction: ap.Int = options["alpha_direction"]
current_alpha: ap.Number = rectangle.fill_alpha
condition_1: ap.Boolean = current_alpha < 0.0
condition_2: ap.Boolean = current_alpha > 1.0
with ap.If(condition_1):
alpha_direction.value = 1
with ap.Elif(condition_2):
alpha_direction.value = -1
rectangle.fill_alpha += alpha_direction * 0.03
rectangle.rotation_around_center += 1
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"))
alpha_direction: ap.Int = ap.Int(1)
rectangle: ap.Rectangle = sprite.graphics.draw_rect(x=50, y=50, width=50, height=50)
options: _Options = {"rectangle": rectangle, "alpha_direction": alpha_direction}
timer: ap.Timer = ap.Timer(on_timer, delay=ap.FPS.FPS_60, options=options)
timer.start()
ap.save_overall_html(dest_dir_path="what_apysc_can_do_timer_animation/")
参考資料:
アニメーションのインターフェイスによる各属性のアニメーション¶
各アニメーション(Tween)のインターフェイスを使ってアニメーションをさせることができます。
参考資料: