Animation and Transformation Language (ATL) link

Animation and Transformation Language (ATL) では以下のことが高水準に可能です。表示する displayable を選択し、それをスクリーンに配置し、 回転、ズーム、アルファ修正のような変換を適用する。これらは時間の経過やイベントに対応して変化させられます。

Python で ATL 変換と等価なのは Transform() displayable です。ATL 変換はプログラム的には作成できません。

Ren'Py スクリプトのステートメント link

ATL コードは Ren'Py スクリプトステートメントの一部として使えます。

transform ステートメント link

transform ステートメントは、at 節に与えるATL変換を作成します。transform ステートメントの構文は

atl_transform ::=  "transform" name "(" parameters ")" ":"
                      atl_block

transform ステートメントは、init (初期化) 時に実行されなければなりません。init ブロックの外にあると、自動的に init ブロック内に配置され、優先度は 0 になります。変換にはパラメーターリストを与えることができ、これらは呼び出されたときに提供されなければなりません。

Name は Python 識別子でなければなりません。ATL ブロックによって作成された変換はその名前に関連付けされます。

transform left_to_right:
    xalign 0.0
    linear 2.0 yalign 1.0
    repeat

image ステートメントの ATL ブロック link

ATL を使う第二の方法は、image ステートメントの ATL ブロックとして使うことです。これは、画像名を指定した変換に関連付けします。この変換にパラメーターを与える方法はないので、この使い道はアニメーションの定義ぐらいです。image ステートメントに ATL ブロックを加える構文は以下のとおりです。 :

atl_image ::=  "image" image_name ":"
                  atl_block
image eileen animated:
    "eileen_happy.png"
    pause 1.0
    "eileen_vhappy.png"
    pause 1.0
    repeat

scene ステートメントおよび show ステートメントの ATL ブロック link

ATL を使う最後の方法は、scene ステートメントや show ステートメントに含めることです。これは、表示される画像を ATL 変換でラップします。

atl_scene ::=  stmt_scene ":"
                   atl_block
atl_show  ::=  stmt_show ":"
                   atl_block
scene bg washington:
    zoom 2.0

show eileen happy:
    xalign 1.0

ATL 構文および語義 link

あるステートメントの ATL ブロックは、そのステートメントより深いインデント上に揃えた 1 行以上の論理行からなります。ATL ブロックの各論理行は、1 つ以上の ATL ステートメントを含まなければなりません。

ATL ステートメントには 2 種類あります。単純ステートメント型と複合ステートメント型です。単純ステートメントは ATL ブロックを取りません。1 行の論理行は、カンマで区切られた 1 つ以上の ATL ステートメントを含めます。複合ステートメントにはブロックがあり、行にそれ以外を置くことはできません。複合ステートメントの最初の行は必ずコロン (":") で終わります。

デフォルトでは、ブロック中のステートメントは書いてある順に最初のステートメントから実行されます。実行は、ブロックの終端に達したときに終わります。time ステートメントはこれを該当の節で説明する通りに変更します。

ブロックの実行は、ブロックの全てのステートメントが終了したときに終わります。

ATL ステートメントが式の評価を要求するなら、その式は変換がシーンリストに最初に加えられるときに評価されます。(例えば、show ステートメントや ui 関数を使うとき。)

ATL ステートメント link

これらが ATL ステートメントです。

補間ステートメント link

補間ステートメントは、ATL が変換を制御する主な方法です。

atl_interp ::=  ( warper simple_expression | "warp" simple_expression simple_expression )?
                ( property simple_expression ( "knot" simple_expression )*
                | "clockwise"
                | "counterclockwise"
                | "circles" simple_expression
                | simple_expression )*

補間ステートメントの最初の部分で、補間をタイムラップする関数を選びます。(これは、線形時間から非線形時間への関数です。) そのために、ATL で登録されたワーパーの名前を与えるか、予約語「 warp 」に続けて関数を与える式を与えてください。どちらの場合でも、補間にかける秒数を続けます。

ワープ関数が与えられなければ、補間関数は pause 関数を使って 0 秒実行されます。

このワーパーと補間にかける時間は、完了率を計算するのに使われます。これは、補間にかかった時間を補間にかける時間で割ることで計算され、ワーパーに渡されます。このワーパーから返された結果が完了率です。

補間ステートメントには、他にも節をいくつか加えられます。プロパティーと値があるとき、その値はステートメントの終わりにプロパティーが得る値です。この値には数種類の経過で到達します 。:

  • 値に節となる点が 1 つまたは 2 つ続けられると、スプラインモーションが使われます。始点は補間の開始時のプロパティーの値です。終点はプロパティーの値です。節がスプラインを制御するのに使われます。

  • 補間ステートメントに「 clockwise 」または「 counterclockwise 」が含まれると、以下で解説する円運動が使われます。

  • そうでなければ、完了率を使って線形補間されます。

単純式があれば、その評価はワーパーもスプラインも円運動も含まない一つの補間ステートメントを持つ変換でなければなりません。変換から取られたプロパティーは、このステートメントに含まれていたかのように処理されます。

補間の例です

show logo base:
     # Show the logo at the upper right side of the screen.
     xalign 1.0 yalign 0.0

     # Take 1.0 seconds to move things back to the left.
     linear 1.0 xalign 0.0

     # Take 1.0 seconds to move things to the location specified in the
     # truecenter transform. Use the ease warper to do this.
     ease 1.0 truecenter

     # Just pause for a second.
     pause 1.0

     # Set the location to circle around.
     alignaround (.5, .5)

     # Use circular motion to bring us to spiral out to the top of
     # the screen. Take 2 seconds to do so.
     linear 2.0 yalign 0.0 clockwise circles 3

     # Use a spline motion to move us around the screen.
     linear 2.0 align (0.5, 1.0) knot (0.0, .33) knot (1.0, .66)

重要な特例は pause ワーパーで、続けて時間だけを書き、その時間だけ ATL の実行を休止します。

プロパティーには、複数の型の値を取れるものがあります。例えば、xpos プロパティーは整数、浮動小数点数、または renpy.absolute にできます。補間に異なる型の古いプロパティーと新しいプロパティーがあるときの動作は未定義です。

time ステートメント link

time ステートメントは簡単な制御ステートメントです。このステートメントが含まれるブロックが実行され始めてからの時間を秒で表す単純式を 1 つ含みます。

atl_time ::=  "time" simple_expression

このステートメントで指定した時間が経過すると、後に続くステートメントの実行が始まります。この制御の移行は前のステートメントが実行中であってさえ行われ、先行するステートメントは即座に終了します。

time ステートメントには暗黙に無限時間の pause ステートメントが前置されます。つまり、time ステートメントにたどり着いたときに制御が別のところにあれば、time ステートメントは制御を得るまで待ちます。

一つのブロックに複数の time ステートメントがある場合、それらは厳密に時間の経過順でなくてはなりません。

image backgrounds:
    "bg band"
    time 2.0
    "bg whitehouse"
    time 4.0
    "bg washington"

式 ステートメント link

式 ステートメントは、単純式で始まる単純ステートメントです。with 節で 2 つめの単純式を続けることもできます。

atl_expression ::=   simple_expression ("with" simple_expression)?

最初の単純式は、以下の 3 つのいずれかに評価されるものにできます :

  • これが変換の場合、その変換が実行されます。with 節は変換が与えられたときは無視されます。

  • 整数または浮動小数点数の場合、pause が実行される秒数になります。

  • そうでなければ、この式は displayable と解釈されます。この displayable は、この節が実行されたときに変換の子を置き換えるので、アニメーションに便利です。with 節があると、第二の式はトランジションと評価され、そのトランジションが前後の displayable に適用されます。

image atl example:
     # Display logo_base.png
     "logo_base.png"

     # Pause for 1.0 seconds.
     1.0

     # Show logo_bw.png, with a dissolve.
     "logo_bw.png" with Dissolve(0.5, alpha=True)

     # Run the move_right tranform.
     move_right

pass ステートメント link

atl_pass ::=  "pass"

pass ステートメントは、何も起こさない単純ステートメントです。これは、ステートメントを分割したいときに使えます。例えば、2 組の choice ステートメントが連続するのではなく分かれているときです。

Repeat ステートメント link

repeat ステートメントは、そのブロックの実行を再び最初から始める単純ステートメントです。式があれば、その評価がブロックの実行回数を与える整数になります。(ですから、「 repeat 2 」で終わるステートメントは最高で 2 回実行されます。)

atl_repeat ::=  "repeat" (simple_expression)?

repeat ステートメントは、必ずブロックの最後になければなりません。

show logo base:
    xalign 0.0
    linear 1.0 xalign 1.0
    linear 1.0 xalign 0.0
    repeat

Block ステートメント link

block ステートメントは、ATL コードのブロックを含むステートメントをまとめます。ステートメントを繰り返すためにグループ化するのに使えます。

atl_block_stmt ::=  "block" ":"
                         atl_block
label logo base:
    alpha 0.0 xalign 0.0 yalign 0.0
    linear 1.0 alpha 1.0

    block:
        linear 1.0 xalign 1.0
        linear 1.0 xalign 0.0
        repeat

choice ステートメント link

choice ステートメントは、選択肢群の 1 つを定義する複合ステートメントです。Ren'py はその選択肢群から 1 つ選び、対応する ATL ブロックを実行します。その後、最後の選択肢の後から実行を続けます。

atl_choice ::=  "choice" (simple_expression)? ":"
                    atl_block

ブロック内の連続する choice ステートメントは貪欲にグループ化されます。simple_expression が与えられていると、浮動小数点数のウェイトとしてブロックに与えられます。なければ 1.0 になります。

image eileen random:
    choice:
        "eileen happy"
    choice:
        "eileen vhappy"
    choice:
        "eileen concerned"

    pause 1.0
    repeat

Parallel ステートメント link

parallel ステートメントは、並行して実行される ATL ブロック群を定義するのに使われます。

atl_parallel ::=  "parallel" ":"
                     atl_block

ブロック内の連続する parallel ステートメントは 貪欲にグループ化されます。全ての parallel ステートメントのブロックが同時進行で実行されます。parallel ステートメントは、最後のブロックが終了したときに終了します。

群中のブロックは、それぞれ独立したもので、かつ異なるプロパティーを操作するものでなければなりません。2 つのブロックが同じプロパティーを変更するときの結果は未定義です。

show logo base:
    parallel:
        xalign 0.0
        linear 1.3 xalign 1.0
        linear 1.3 xalign 0.0
        repeat
    parallel:
        yalign 0.0
        linear 1.6 yalign 1.0
        linear 1.6 yalign 0.0
        repeat

Event ステートメント link

event ステートメントは、指定した名前のイベントを引き起こす単純ステートメントです。

atl_event ::=  "event" name

あるブロック内でイベントが引き起こされたとき、指定した名前に対するイベントハンドラがそのブロックに存在しないかチェックされます。存在すれば、制御はイベントハンドラに移ります。存在しなければ、イベントは外側のイベントハンドラに伝播します。

On ステートメント link

on ステートメントは、イベントハンドラを定義する複合ステートメントです。on ステートメントは一つのステートメントに貪欲にグループ化されます。 onステートメントでは、1つまたはコンマで区切られた複数のイベント名を扱えます。

atl_on ::=  "on" name [ "," name ] * ":"
                 atl_block

on ステートメントは、イベントを処理するのに使います。イベントが処理されるとき、他のイベントの処理は終了し、新しいイベントの処理が即座に始まります。他のイベントが起こることなくイベントハンドラが終了したとき、(すでに default イベントを処理していたのでなければ) default イベントが引き起こされます。

on ステートメントの実行は自然には終わりません。(しかし、time ステートメントや外側のイベントハンドラによって終了され得ます。)

show logo base:
    on show:
        alpha 0.0
        linear .5 alpha 1.0
    on hide:
        linear .5 alpha 0.0

transform pulse_button:
    on hover, idle:
        linear .25 zoom 1.25
        linear .25 zoom 1.0

Contains ステートメント link

contains ステートメントは、この ATL 変換に含まれる displayable (変換の子変換) を設定します。contains ステートメントには 2 種類あります。

contains 式は式を取り、その式を変換の子変換として設定します。これは ATL 変換に第2の ATL 変換を含みたいが取り込みたくはないときに便利です。

atl_contains ::=  "contains" expression
transform an_animation:
    "1.png"
    pause 2
    "2.png"
    pause 2
    repeat

image move_an_animation:
    contains an_animation

    # If we didn't use contains, we'd still be looping and
    # would never reach here.
    xalign 0.0
    linear 1.0 yalign 1.0

contains ブロックではこの ATL 変換の子変換として使われる ATL ブロックを定義できます。連続する contains ブロックステートメントは貪欲にグループ化され、 Fixed() でラップされ、この変換の子変換として設定されます。全ての parallel ステートメントのブロックが同時進行で実行されます。

atl_counts ::=  "contains" ":"

それぞれのブロックで使用する displayable を定義していなければならず、そうでなければ例外が発生します。contains ステートメントは、子が完了するのを待たずにすぐに実行します。このステートメントは、引数を子に簡単に渡せるようにするシンタックスシュガーに近いです。

image test double:
    contains:
        "logo.png"
        xalign 0.0
        linear 1.0 xalign 1.0
        repeat

    contains:
        "logo.png"
        xalign 1.0
        linear 1.0 xalign 0.0
        repeat

Function ステートメント link

function ステートメントで、ATL に ATL プロパティーを制御する Python 関数を使わせられます。

atl_function ::=  "function" expression

この関数の定義は Transform() で使われるのと同じです :

  • 第一引数は変換オブジェクトです。このオブジェクトに変換プロパティーを設定できます。

  • 第二引数は出現時間軸で、関数が実行され始めてからの秒数です。

  • 第三引数はアニメーション時間軸で、同じタグのものがスクリーン上にある秒数です。

  • この関数の結果が数の場合、その秒数が経過するとまた呼び出されます。(0 秒なら、関数はできるだけ早く呼び出されます。) 関数が None を返したら、制御は次の ATL ステートメントに渡されます。

init python:
    def slide_function(trans, st, at):
        if st > 1.0:
            trans.xalign = 1.0
            return None
        else:
            trans.xalign = st
            return 0

label start:
    show logo base:
        function slide_function
        pause 1.0
        repeat

ワーパー link

ワーパーは、補間ステートメントが経過したとみなす時間を変更する関数です。デフォルトで以下のワーパーが定義されています。これらは t から t' への関数として定義されています。ここで t および t' は 0.0 から 1.0 の浮動小数点数です。(ステートメントの持続時間が 0 なら、t は実行時に 1.0 になります。) t' は0.0 から始まり、 1.0 で終るべきですが、それ以上でもそれ以下でも可能です。

pause

一時停止し、新しい値に飛びます。t == 1.0 なら t' = 1.0、そうでなければ t' = 0.0 です。

linear

線形補間です。t' = t

ease

最初は遅く、徐々に加速し、それから徐々減速します。t' = 0.5 - math.cos(math.pi * t) / 2.0

easein

最初は速く、徐々に減速します。t' = math.cos((1.0 - t) * math.pi / 2.0

easeout

最初は遅く、徐々に加速します。t' = 1.0 - math.cos(t * math.pi / 2.0)

さらに Robert Penner の easing 関数の殆どがサポートされます。上記と名前を合せるため、関数はリネームされました。これらの基本関数のグラフはこちらで閲覧出来ます。 http://www.easings.net/.

Ren'Py Name easings.net Name
ease_back easeInOut_back
ease_bounce easeInOut_bounce
ease_circ easeInOut_circ
ease_cubic easeInOut_cubic
ease_elastic easeInOut_elastic
ease_expo easeInOut_expo
ease_quad easeInOut_quad
ease_quart easeInOut_quart
ease_quint easeInOut_quint
easein_back easeOut_back
easein_bounce easeOut_bounce
easein_circ easeOut_circ
easein_cubic easeOut_cubic
easein_elastic easeOut_elastic
easein_expo easeOut_expo
easein_quad easeOut_quad
easein_quart easeOut_quart
easein_quint easeOut_quint
easeout_back easeIn_back
easeout_bounce easeIn_bounce
easeout_circ easeIn_circ
easeout_cubic easeIn_cubic
easeout_elastic easeIn_elastic
easeout_expo easeIn_expo
easeout_quad easeIn_quad
easeout_quart easeIn_quart
easeout_quint easeIn_quint

python early ブロック内で renpy.atl_warper を使って新しいワーパーが定義できます。これはワーパーを使うファイルの前に読み込まれるファイル内に書きこまれていなければなりません。コードは次のようになります :

python early hide:

    @renpy.atl_warper
    def linear(t):
        return t

変換プロパティーの一覧 link

以下の変換プロパティーが存在します。

型が position と書かれていれば、それは整数、浮動小数点数、または renpy.absolute にできます。浮動小数点数なら、それが含まれる (位置では) 領域または (アンカー位置では) displayable に対する割合として解釈されます。

なお、全てのプロパティーが独立しているわけではありません。例えば、xalign と xpos はどちらも同じ元となるデータを更新します。parallel ステートメントでは、水平位置を調節していいブロックは 1 つだけ、垂直位置を調節していいブロックも 1 つだけです。(同じブロックで両方調節しても良いです。) angle および radius プロパティーは、水平位置と垂直位置の両方を設定します。

pos link
Type:

(位置表現, 位置表現)

Default:(0, 0)

それを含む領域の左上隅に対する位置です。

xpos link
Type:

位置表現

Default:0

それを含む領域の左端に対する水平位置です。

ypos link
Type:

位置表現

Default:0

それを含む領域の上端に対する垂直位置です。

anchor link
Type:

(位置表現, 位置表現)

Default:(0, 0)

それを含む displayable の左上隅に対するアンカー位置です。

xanchor link
Type:

位置表現

Default:0

それを含む displayable の左端に対する水平アンカー位置です。

yanchor link
Type:

位置表現

Default:0

それを含む displayable の上端に対する垂直アンカー位置です。

align link
Type:(float, float)
Default:(0.0, 0.0)

それを含む displayable の上端に対する垂直アンカー位置です。

xalign link
Type:float
Default:0.0

xpos および xanchor をこの値に設定するのと等価です。

yalign link
Type:float
Default:0.0

ypos および yanchor をこの値に設定するのと等価です。

xoffset link
Type:float
Default:0.0

displayable の水平方向のオフセットのピクセル数です。正の数の右向きのオフセットです。

yoffset link
Type:float
Default:0.0

displayable の縦方向のオフセットのピクセル数です。正の数は下向きのオフセットです。

xcenter link
Type:float
Default:0.0

xpos をこのプロパティーの値に、xanchor を 0.5 に設定するのと等価です。

ycenter link
Type:float
Default:0.0

ypos をこのプロパティーの値に、ranchor を 0.5 に設定するのと等価です。

rotate link
Type:

float または None

Default:None

None なら、回転は起こりません。そうでなければ、画像はこの角度だけ時計回りに回転します。displayable を回転すると、rotate_pad の設定に従ってリサイズされます。 xanchor および yanchor が 0.5 でなければ、これによって位置取りが変わることがあります。

rotate_pad link
Type:boolean
Default:True

True の場合、回転された displayable の幅と高さが、元の幅と高さの斜辺と同じになるように埋め込まれます。これは、変換が内容を回転させてもサイズが変わらないことを保証します。 False の場合、変換は変換された displayable を含む最小限のサイズになります。これは固定回転に向いています。

transform_anchor link
Type:boolean
Default:False

True なら anchor の位置は切り取られた子に配置され、子の変換と共に位置を調整します。つまりこれは anchor をその周りで子が回転したり、サイズが変更したりする点にします。

zoom link
Type:float
Default:1.0

これは、displayable に与えられた係数倍ズームします。

xzoom link
Type:float
Default:1.0

これは、displayable に与えられた係数倍水平にズームします。負の値は画像を水平に反転します。

yzoom link
Type:float
Default:1.0

これは、displayable に与えられた係数倍垂直にズームします。負の値は画像を垂直に反転します。

nearest link
Type:boolean
Default:None

True なら displayable とその子は最近傍補間を使用して描画されます。 False なら displayable とその子は双一次補間で描画されます。None なら親の設定から引き継がれるか、 config.nearest_neighbor が使用されます。これはデフォルトでは False です。

alpha link
Type:float
Default:1.0

これは、displayable の不透明度を制御します。

alpha 変換は変換の子で構成される各画像に独立して適用されます。これはキャラクターとの距離を考慮してキャラクターを見るときのように、子が重なり合っていると望まぬ結果になるかもしれません。 Flatten() displayable はこれらの問題の手助けになるでしょう。

additive link
Type:float
Default:0.0

これは Ren'Py が加算合成をどう処理するかを制御します。 1.0 なら Ren'Py は ADD 処理を使用し、 0.0 なら OVER 処理を使用して描画します。

Additive blending は変換のそれぞれの子に独立して処理されます。

完全な加算合成は対象のアルファチャンネルを置き換えず、加算合成された画像は不透明な部分に直接描画されていなければ見えないでしょう。 ( viewport, Flatten(), Frame(), や一部のトランジションのような複雑な処理は加算合成で問題を起こすかもしれません。 )

警告

加算合成はOpenGL や DirectX/ANGLE レンダリングエンジンのようにハードウェアベースのレンダリングエンジンでのみサポートされます。ソフトウェアレンダリングエンジンは加算合成された画像を正確に描画出来ないでしょう。

一旦描画システムが開始すると、 renpy.get_renderer_info()["additive"] は加算合成がサポートされていれば True になります。

around link
Type:

(位置表現, 位置表現)

Default:(0.0, 0.0)

None を指定するか、それを含む領域の右上に対する極座標の中心を指定します。これで中心を設定すると、position モードで円運動ができます。

alignaround link
Type:(float, float)
Default:(0.0, 0.0)

None を指定するか、それを含む領域の右上に対する極座標の中心を指定します。これで中心を設定すると、align モードで円運動ができます。

angle link
Type:float

極座標における位置の角度成分を取ります。これは、極座標の中心が設定されていないときには未定義です。

radius link
Type:

位置表現

極座標における位置の半径成分を取ります。これは、極座標の中心が設定されていないときには未定義です。

crop link
Type:None or (int, int, int, int) or (float, float, float, float)
Default:None

None でなければ、指定された矩形に displayable を切り取ります。矩形は (x, y, width, height) のタプルで指定されます。小数が指定されて crop_relative が True なら、要素は元画像の幅と高さの割合として扱われます。そうでなければ要素はピクセル値での絶対数と考えられます。

crop_relative link
Type:boolean
Default:False

True なら crop の小数の要素は元画像の幅と高さの割合として扱われます。

corner1 link
Type:

None または (int, int)

Default:None

None を指定するか、crop ボックスの左上隅を指定します。これは crop より優先されます。

corner2 link
Type:

None または (int, int)

Default:None

None を指定するか、crop ボックスの右下隅を指定します。これは crop より優先されます。

size link
Type:

None または (int, int)

Default:None

None でない場合、displayable を与えられたサイズに合わせます。

subpixel link
Type:boolean
Default:False

True の場合、ピクセル以下の位置調整を利用してスクリーンに描画されます。

delay link
Type:float
Default:0.0

この変換がトランジションとして使われるなら、これはトランジションの持続時間になります。

events link
Type:boolean
Default:True

True の場合、この変換の子にイベントが渡されます。False の場合、イベントはブロックされます。(これはATL変換で使用され、イベントが old_widget に達することを防ぎます。)

xpan link
Type:None or float
Default:None

None か、360度のパノラマ画像を水平に振る角度と解釈されます。画像の中心は0度として扱われ、左右はそれぞれ-180から180度になります。

ypan link
Type:None or float
Default:None

None か、360度のパノラマ画像を縦に振る角度と解釈されます。画像の中心は0度として扱われ、上下はそれぞれ-180から180度になります。

xtile link
Type:int
Default:1

水平に画像をいくつ敷き詰めるかの回数です。 (これは xpan が指定されると無視されます)

ytile link
Type:int
Default:1

縦に画像をいくつ敷き詰めるかの回数です。 (これは ypan が指定されると無視されます)

これらのプロパティーは、以下の順に適用されます :

  1. tile
  2. crop, corner1, corner2
  3. size
  4. zoom, xzoom, yzoom
  5. pan
  6. rotate
  7. 位置のプロパティー

円運動 link

補間ステートメントが予約語 clockwisecounterclockwise を含むとき、円形モーションが補間されます。Ren'Py は開始と終了の位置を比較し、極座標の中心を計算します。そして Ren'Py は開始角度から終了角度まで、指定された方向の回転で進む角度を計算します。円運動の節が与えられたら、Ren'Py は適切な数の円が作られることを保証します。

Ren'Py は angle および radius プロパティーを適切に補間し、円形運動を起こします。変換が align モードの場合、angle および radius を設定すると align プロパティーが設定されます。そうでなければ、pos プロパティーが設定されます。

外部イベント link

以下のイベントは自動的に実行されます :

start

on ステートメントに進入したときに、これより高い優先度のイベントが起こらなかった場合に実行される擬似イベントです。

show

変換が show ステートメントや scene ステートメントによって表示され、与えられたタグの画像がまだ存在しない場合に実行されます。

replace

変換が show ステートメントによって表示され、与えられたタグの画像を置き換えると実行されます。

hide

変換が hide ステートメントやそれと等価な Python を使って非表示されると実行されます。

なお、これが実行されないときがあります。変換が scene ステートメントを通して除去されたときや、ゲームメニューの終了などによって変換が存在するコンテキストから抜けることで除去されたときです。

replaced

変換が別のもので置き換えられたときに引き起こされます。この画像は、ATL ブロックが完了するまで実際には隠されません。

update

スクリーンが表示されずに、または他のスクリーンを置き換えずに更新されると起ります。これはゲームロード時や、スタイルや翻訳変更時などにまれに起ります。

hover, idle, selected_hover, selected_idle

この変換を含むボタンやこの変換に含まれるボタンが名前通りの状態になったときに引き起こされます。