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

mousemove インターフェイス

このページではmousemoveのインターフェイスについて説明します。

インターフェイス概要

mousemoveのインターフェイスは任意のDisplayObjectのインスタンスへとマウスを動かした時のイベントハンドラの設定を追加します。対象のインスタンス上でマウスカーソルを動かす度に設定されたハンドラが呼ばれます。

関連資料

以下のページでは基本的なマウスイベントの各インターフェイスについて説明しています。

基本的な使い方

DisplayObjectの各インスタンスはmousemoveメソッドを持っており、そのインターフェイスを使ってハンドラを設定することができます。

以下のコード例では円に対してマウスを動かしたときのハンドラを設定しています。対象の円の上でマウスカーソルを動かすと、円の位置はカーソルの位置に更新されます。

import apysc as ap


def on_mousemove(e: ap.MouseEvent[ap.Circle], options: dict) -> None:
    """
    The handler that the circle calls when mousemove.

    Parameters
    ----------
    e : MouseEvent
        Event instance.
    options : dict
        Optional arguments dictionary.
    """
    circle: ap.Circle = e.this
    circle.x = e.stage_x
    circle.y = e.stage_y


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"))
circle: ap.Circle = sprite.graphics.draw_circle(x=100, y=100, radius=100)
circle.mousemove(on_mousemove)

ap.save_overall_html(dest_dir_path="mousemove_basic_usage/")

解除用のインターフェイス

unbind_mousemoveインターフェイスではDisplayObjectのインスタンスのマウスを動かした時のイベントのハンドラ設定を解除することができます。

以下のコード例では円をクリックした際にマウスを動かしたときのイベントハンドラの設定を解除するようにしています。

import apysc as ap


def on_mousemove(e: ap.MouseEvent[ap.Circle], options: dict) -> None:
    """
    The handler that the circle calls when mousemove.

    Parameters
    ----------
    e : MouseEvent
        Event instance.
    options : dict
        Optional arguments dictionary.
    """
    circle: ap.Circle = e.this
    circle.x = e.stage_x
    circle.y = e.stage_y


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

    Parameters
    ----------
    e : MouseEvent
        Event instance.
    options : dict
        Optional arguments dictionary.
    """
    circle: ap.Circle = e.this
    circle.unbind_mousemove(handler=on_mousemove)


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"))
circle: ap.Circle = sprite.graphics.draw_circle(x=100, y=100, radius=100)
circle.mousemove(on_mousemove)
circle.click(on_click)

ap.save_overall_html(dest_dir_path="mousemove_unbind_interface/")

また、unbind_mousemove_allのインターフェイスも存在し、このインターフェイスはDisplayObjectのインスタンスからマウスを動かしたときのイベントのハンドラ設定を全て解除します。

mousemove API

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

[インターフェイスの構造] mousemove(self, handler: Callable[[apysc._event.mouse_event.MouseEvent, ~_Options], NoneType], *, options: Union[~_Options, NoneType] = None) -> str


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

マウスを動かした時のイベント設定を追加します。


[引数]

  • handler: _Handler

    • インスタンス上でマウスを動かした際に呼ばれる関数もしくはメソッド。

  • options: dict or None, default None

    • ハンドラに渡される省略が可能な追加のパラメーターとしての辞書。


[返却値]

  • name: str

    • ハンドラ名。


[コードサンプル]

>>> import apysc as ap
>>> def on_mousemove(e: ap.MouseEvent[ap.Rectangle], options: dict) -> None:
...     stage_x: ap.Int = e.stage_x
...     ap.trace("stage_x:", stage_x)
>>> stage: ap.Stage = ap.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.mousemove(on_mousemove)

[関連資料]

unbind_mousemove API

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

[インターフェイスの構造] unbind_mousemove(self, handler: Callable[[apysc._event.mouse_event.MouseEvent, ~_Options], NoneType]) -> None


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

マウスカーソルを動かした際のイベントで指定されたハンドラの設定を解除します。


[引数]

  • handler: _Handler

    • イベント設定を取り除く対象の関数やメソッドなど。


[コードサンプル]

>>> import apysc as ap
>>> def on_mousemove(e: ap.MouseEvent[ap.Rectangle], options: dict) -> None:
...     stage_x: ap.Int = e.stage_x
...     ap.trace("stage_x:", stage_x)
>>> def on_click(e: ap.MouseEvent[ap.Rectangle], options: dict) -> None:
...     rectangle: ap.Rectangle = e.this
...     rectangle.unbind_mousemove(on_mousemove)
>>> stage: ap.Stage = ap.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.mousemove(on_mousemove)
>>> _ = rectangle.click(on_click)

unbind_mousemove_all API

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

[インターフェイスの構造] unbind_mousemove_all(self) -> None


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

マウスカーソルを動かしたときのイベントの全てのハンドラ設定を解除します。


[コードサンプル]

>>> import apysc as ap
>>> def on_mousemove(e: ap.MouseEvent[ap.Rectangle], options: dict) -> None:
...     stage_x: ap.Int = e.stage_x
...     ap.trace("stage_x:", stage_x)
>>> def on_click(e: ap.MouseEvent[ap.Rectangle], options: dict) -> None:
...     rectangle: ap.Rectangle = e.this
...     rectangle.unbind_mousemove_all()
>>> stage: ap.Stage = ap.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.mousemove(on_mousemove)
>>> _ = rectangle.click(on_click)