Python による transform とトランジション link

Ren'Py で使用するための新しい transform とトランジションの作成に Python を使用出来ます。

Transform link

詳細: Transform Animation and Transformation Language (ATL)

transform とは呼び出し可能な python オブジェクトで、 displayable を引数に呼び出されて別の displayable を返します。

init python:

    # This is a transform that uses the right and
    # left transforms.
    def right_or_left(d):
        if switch:
            return right(d)
        else:
            return left(d)

Transform オブジェクトは ATL transform に相当する python です。

class Transform(child=None, function=None, **properties) link

transform は cropping や rotation, scaling, alpha-blending のような処理をその子に適用します。 transform オブジェクトはその子に適用する transform プロパティー に対応するフィールドを持ちます。

child

transform が適用される子

function(trans, st, at, /) int | None link

None を設定するか、 transform がレンダリングされるときに呼び出される関数を設定します。関数は3つの引数で呼び出されます。 :

  • transform オブジェクト

  • 秒数での出現時間軸

  • 秒数でのアニメーション時間軸

関数が秒数を返すなら、その秒数後再度呼び出され、 None なら次のインタラクション開始時に再度呼び出されます。

この関数は予測のためにいつどの数値で呼び出されるか分からないので、第一引数の Transform オブジェクトの変更の他には副作用を持つべきではありません。

追加のキーワード引数はその transform プロパティーに設定される値となります。 transform が描画されるたびにこれらの指定の transform プロパティーは設定されるので、それらの transform プロパティーは Transform オブジェクトが作成された後は変更されないでしょう。しかし、他の transform プロパティーに対応するフィールドは、 function パラメータとして渡される関数内や update() メソッドを呼び出す直前で設定して、変更できます。

hide_request link

これは関数が呼び出されると True に設定され、 transform が非表示されていることを示します。

hide_response link

hide_request が True なら、これを False に設定して transform が非表示されないようにできます。

set_child(child) link

新しい child でこのメソッドを呼び出すと、この transform の子を変更します。

update() link

function 引数として渡された関数以外から transform プロパティーフィールドが更新されるときには、これを呼び出して変更を確実に反映する必要があります。

トランジション link

詳細: トランジション

詳細: ATL トランジション

トランジションとは 2 つのキーワード引数で呼び出され、トランジション効果を処理する displayable を返す呼び出し可能な python です。 2つのキーワード引数は次となります。 :

old_widget

以前のスクリーンを表す displayable

new_widget

新しいスクリーンを表す displayable

返される displayable はトランジションが実行されるべき秒数を与える delay フィールドを持ちます。

init python:

    def dissolve_or_pixellate(old_widget=None, new_widget=None):
        if persistent.want_pixellate:
            return pixellate(old_widget=old_widget, new_widget=new_widget)
        else:
            return dissolve(old_widget=old_widget, new_widget=new_widget)