次の関数はスクリーンに関連する様々な処理をサポートします。
renpy.
call_screen
(_screen_name, *args, _with_none=True, _mode="screen", **kwargs) linkプログラム的には call screen ステートメントに相当します。
これはスクリーンとして _screen_name を表示し、インタラクションを実行します。スクリーンはインタラクションが終わると非表示になり、インタラクションの結果が返されます。
_ で始まらない位置引数、キーワード引数はスクリーンに渡されます。
キーワード引数 _with_none が False なら「 with None 」はインタラクションの終わりに実行されません。
キーワード引数 _mode があれば、それがこのインタラクションのモードになり、そうでなければ "screen" モードになります。
renpy.
current_screen
() link現在更新または描画、処理中のスクリーンに対応する ScreendDisplayable を返します。
ScreenDisplayable のドキュメントに記載されたフィールドは get_screen()
を参照してください。
renpy.
get_displayable
(screen, id, layer=None, base=False) linklayer 上の screen から id を持つ ウィジェットを返します。スクリーンが存在しないか、そのスクリーン上にその id を持つウィジェットが存在しなければ None を返します。
renpy.
get_displayable_properties
(id, screen=None, layer=None) linklayer 上の screen にある id のウィジェットのプロパティーを返します。screen が None なら、現在のスクリーンに対するプロパティーを返します。これは python やスクリーン内のプロパティーコードから使用出来ます。
これはそのウィジェットのプロパティーを持つ辞書を返すので、そこから各プロパティーを所得出来ることに注意してください。
renpy.
get_screen
(name, layer=None) link与えられた name を持つ layer 上の ScreenDisplayable を返します。name は画像タグと解釈され、なければスクリーンの名前と解釈されます。そのスクリーンが表示されていなければ None が返されます。
name は name のリストでもかまいません、その場合表示されている最初のスクリーンが返されます。
この関数を使用してスクリーンが表示されているかチェック出来ます。例
if renpy.get_screen("say"):
text "The say screen is showing."
else:
text "The say screen is hidden."
この関数から返された ScreenDisplayable オブジェクトのフィールドのうち、次のフィールドを記載します :
ScreenDisplayable.
layer
linkスクリーンを表示するためのレイヤーです。
ScreenDisplayable.
name
link表示するスクリーンの名前です。
ScreenDisplayable.
zorder
linkスクリーンが表示される zorder です。
renpy.
hide_screen
(tag, layer=None) linkプログラム的に hide screen ステートメントに相当します。
layer 上の tag を持つスクリーンを非表示にします。
renpy.
set_focus
(screen, id, layer=u'screens') linkscreen 中の id を持つ displayable にフォーカスを試みます。これはその Displayable が見つからなければ失敗し、そのウィンドウはフォーカスされないか、他のものにフォーカスします。
この呼び出しが処理されると僅かでもマウスが移動するとフォーカスは変化します。
renpy.
show_screen
(_screen_name, *_args, **kwargs) linkプログラム的には show screen ステートメントに相当します。
その名前のスクリーンを表示します。これは以下のキーワード引数を受け取ります。 :
表示するスクリーンの名前です。
スクリーンを表示するためのレイヤーです。
スクリーンに表示する zorder です。指定されなければそのスクリーンのデフォルトの zorder です。それもなければ 0 になります。
表示するスクリーンのタグです。指定されなければそのスクリーンのデフォルトのタグです。それもなければデフォルトでそのスクリーンの名前になります。
ウィジェットの id から、プロパティー名からその値へのマップのマップです。その id のウィジェットがスクリーンによって表示されると、指定したプロパティーがそこに追加されます。
True ならスクリーンは現在のインタラクションが終わると自動的に非表示になります。
アンダースコア (_) で始まらない位置引数とキーワード引数はそのスクリーンに渡されます。
renpy.
start_predict_screen
(_screen_name, *args, **kwargs) link_screen_name という名のスクリーンを指定された引数で表示したときの予測を Ren'Py に開始させます。これは _screen_name の以前の予測を置き換えます。スクリーンの予測を停止するためには renpy.stop_predict_screen()
を呼び出してください。
予測は通常のゲームプレイ中ずっと発生します。予測の完了を待つには、 predict 引数に renpy.pause()
を使用してください。
renpy.
stop_predict_screen
(name) linkname という名のスクリーンの予測を停止させます。
renpy.
variant
(name) linkname が現在 Ren'Py に実行されているスクリーン variant なら True を返します。詳細は スクリーン variant を参考にしてください。この関数を if ステートメントで条件に使用して、選択したスクリーン variant に対して振る舞いを変更出来ます。
name はスクリーン variant のリストでもかまいません、その場合この関数はそのどのスクリーン variant が選択されても True を返します。
ui.
adjustment
(range=1, value=0, step=None, page=None, changed=None, adjustable=None, ranged=None, force_step=False) linkadjustment オブジェクトは bar や viewport によって調整される値を表します。これは値や値の範囲、 step と page での値の調整法についての情報を含みます。
以下のパラメーターは adjustment オブジェクトのフィールドやプロパティーに対応します。 :
adjustment の範囲で、数字です。
adjustment の値で、数字です。
adjustment の一つの step のサイズで、数字です。 None ならデフォルトでは page が設定されていればその10分の1で、そうでなければ range の10分の1です。
これはマウスホイールで viewport をスクロールするときに使用されます。
adjustment の page あたりのサイズです。 None ならこれは viewport により自動的に設定されます。もし設定されなければ、デフォルトで range の10分の1です。
スクロールバーをクリックすると使用されます。
以下のパラメーターは adjustment の動作を制御します。
True ならこの adjustment はbar から変更できます。 False なら出来ません。
デフォルトでは changed 関数が与えられているか adjustment が viewport に関連づけられていれば変更可能で、そうでなければ出来ません。
この関数は adjustment の値が変更されるとその新しい値を引数に呼び出されます。
この関数は adjustment の range が viewport によって設定されると adjustment オブジェクトを引数に呼び出されます。
レイアウトの過程でこの関数は複数回呼び出されます。
adjustment が viewport や bar に対応する draggable で変更され、かつこれが True ならばドラッグが次のステップに達したときのみ値が変更されます。 adjustment が viewport や bar に対応する draggable で変更され、かつこれが "release" ならば、 draggable の解放時、値は最も近いステップに丸められます。 False ならばこの adjustment はステップの値を無視します。
change
(value) linkadjustment の値を value に変更し、その adjustment を使用しているすべての bar や viewport が更新されます。
ui.
interact
(roll_forward=None, mouse='default') linkユーザーとのインタラクションを起し、その結果を返します。これは Ren'Py にスクリーンを再描画させ入力イベントの処理を開始します。 displayable がイベントに対して値を返すと、その値は ui.interact から返され、インタラクションは終了します。
この関数は滅多に直接呼び出されません。 say ステートメントや menu, with pause, call screen ステートメント含む Ren'Py の一部、 renpy.input()
などの多くの関数から通常呼び出されます。しかし必要なら直接呼び出せます。
インタラクション終了時、 transient レイヤーと transient=True で表示されたすべてのスクリーンはそのシーンリストから除去されます。
以下の引数はドキュメントに記載されています。ドキュメントに記載されていない引数は Ren'Py 内部で使用するために存在するのですべての引数はキーワード引数として渡してください。
ロールバック時にこの関数から返される情報です( None ならロールフォワードは無視されます)。これには通常 renpy.roll_forward_info()
関数の結果が渡されるはずです。
この関数を実行中のマウスカーソルのスタイルです。
スクリーン言語で作成された displayable の多くは引数としてアクションを受け取ります。アクションは以下の三つのうちいずれかです。 :
引数を受け取らない呼び出し可能な ( 関数や bound method のような ) python オブジェクト
Action クラスを継承するクラスのオブジェクト
他のアクションのリスト
Action クラスを継承する利点はボタンが有効か、選択されているかを設定するメソッドを上書き可能なことです。
Action
link新しいアクションを定義するためにはこのクラスを継承してください。アクションの動作を変更するためにはこのクラスのメソッドを上書きしてください。
__call__
(self) linkこれはアクションがアクティベートされると呼び出されるメソッドです。多くの場合 None でない値を返すと、現在のインタラクションが終了します。
このメソッドはデフォルトでは NotImplemented の例外を出す ( Ren'Py にエラーを報告させる ) ため、上書きする必要があります。
get_sensitive
(self) linkこれはこのアクションに関連づけられたボタンが有効かどうかを決定するために呼び出されます。ボタンが有効なら True を返すべきです。
これが False を返しても __call__ は実行されることに注意してください。
デフォルトでは True を返します。
get_selected
(self) linkこれはボタンが選択された状態でレンダリングされるべきなら True を返し、そうでないなら False を返すべきです。
デフォルトでは False を返します。
get_tooltip
(self) link特定のツールチップが代入されていなければこのボタンのデフォルトのツールチップを所得します。ツールチップの値または ツールチップが分からなければ None を返します。
デフォルトでは None を返します。
periodic
(self, st) linkこのメソッドは各インタラクションが開始されると一旦呼び出され、その後も継続的に呼び出されます。数字を返すとその秒数が経過すると、そうでないならすぐに呼び出されます。
これの主な使用法は get_selected や get_sensitive の値が変更されたら renpy.restart_interaction()
を呼び出すことです。
引数を一つ受け取ります。
このアクションに関連づけられたスクリーンか displayable が最初に表示されてからの秒数です。
unhovered
(self) linkアクションがボタン ( または同様なオブジェクト ) への hovered パラメーターとして使用されると、このメソッドはそのオブジェクトがフォーカスを失うと呼び出されます。
pythonからアクションを実行するには renpy.run()
を使用してください。
renpy.
is_selected
(action) link提供された action や action のリストが選択状態なら True を返し、そうでないなら False を返します。
renpy.
is_sensitive
(action) link提供された action や action のリストが選択可能状態なら True を返し、そうでないなら False を返します。
renpy.
run
(action) linkアクションまたはアクションのリストを実行します。単体のアクションは引数なしで呼び出され、アクションのリストはこの関数で順番に実行されます。 None は無視されます。
最後のアクションの結果の値を返します。
bar, vbar または hotbar 作成時に BarValue オブジェクトは value 引数に提供されます。 BarValue オブジェクトのメソッドは adjustment やスタイルを得るために呼び出されます。
BarValue
link新しい BarValue を定義するためには、このクラスを継承してそのメソッドを上書きしてください。
get_adjustment
(self) linkこのメソッドは bar の adjustment オブジェクトを得るために呼び出されます。 ui.adjustment()
で adjustment を作成し、作成されたオブジェクトを返します。
このメソッドはデフォルトでは NotImplemented の例外を出す ( Ren'Py にエラーを報告させる ) ため、上書きする必要があります。
get_style
(self) linkこれはこの値を使用する bar のスタイルを決定するために使用されます。二つのスタイル名か、 style オブジェクトのタプルを返すべきです。第 一要素は bar に、第二要素は vbar に使用されます。 :
これはデフォルトで ("bar", "vbar") です。
get_tooltip
(self) link特定のツールチップが代入されていなければこのボタンのデフォルトのツールチップを所得します。ツールチップの値または ツールチップが分からなければ None を返します。
デフォルトでは None を返します。
replaces
(self, other) linkこれはスクリーンが更新される時のように、 BarValue が他の BarValue を置き換えるときに呼び出され、 other からこの BarValue に更新するために使用されます。 get_adjustment より前に、呼び出されます。
other は self と同じ型である必要はありません。
periodic
(self, st) linkこのメソッドは各インタラクションの開始時に一度呼び出され、秒数の数字を返すとその時間が経過した後に、そうでなければすぐに再び呼び出されます。 これは get_adjustment の後に呼び出されます。
AnimatedValue()
のように時間につれて bar の値を更新するために使用されます。このためには、 get_adjustment で adjustment を保持し、 periodic で adjustment の changed メソッドを呼び出すべきです。
input 作成時に、 InputValue オブジェクトは value プロパティーとして提供されます。 InputValue オブジェクトのメソッドは テキストの設定と所得、編集可能かどうか、エンターキーが押されたときの処理を決定するために呼び出されます。
InputValue
link新しい InputValue を定義するためには、このクラスを継承してそのメソッドを上書きしてください。
default
linkTrueなら、input はデフォルトで編集可能な状態です(スクリーン表示時に、キャレットが与えられます)。
get_text
(self) link入力されたテキストを返します。これは実装されなければいけません。
set_text
(self, s) link入力されたテキストが変更されると、新しいテキストで呼び出されます。これは実装されなければいけません。
enter
(self) linkユーザーがエンターを押すと呼び出されます。これが None 以外を返すと、その値がインタラクションから返されます。これは renpy.IgnoreEvent() でイベントを投げて押下を無視します。そうでなければ、他の displayable にエンターキーの押下が伝達されます。
以下のアクションは InputValue で利用可能なメソッドです。 :
Enable
() linkテキストを編集可能にするアクションを返します。
Disable
() linkテキストを編集不能にするアクションを返します。
Toggle
() linkテキストが編集可能かをトグルするアクションを返します。
Ren'Py はユーザー定義スクリーン言語ステートメントをサポートしています。ユーザー定義スクリーン言語ステートメントはスクリーン言語の use ステートメント に対するラッパーです。位置引数はそのまま位置引数になり、プロパティーはキーワード引数になり、ステートメントがブロックを受け取ると、use ステートメント同様に処理します。例えば次のユーザー定義スクリーン言語ステートメントは
titledwindow "Test Window":
icon "icon.png"
text "This is a test."
こうなります。
use titledwindow("Test Window", icon="icon.png"):
text "This is a test."
ユーザー定義スクリーン言語ステートメントは python early
ブロックで登録されなければなりません。また、そのユーザー定義ステートメントがあるファイル名はそれを使用するどのファイルよりも先に読み込まれなけれなければなりません。Ren'Py はファイルをパスのユニコード順に読み込むので、ユーザー定義ステートメントを登録するファイル名の先頭に 01 や小さい数を付けるとよいです。
ユーザー定義スクリーン言語ステートメント renpy.register_sl_statement 関数で登録されます。 :
renpy.
register_sl_displayable
(name, displayable, style, nchildren=0, scope=False, replaces=False, default_keywords={}, default_properties=True, unique=False) linkdisplayable を作成するユーザー定義のスクリーン言語ステートメントを登録します。
スクリーン言語ステートメントの名前でと Ren'Py のキーワードを含む文字列です。このキーワードは新しいステートメントを導入するために使用されます。
これは関数で、呼び出されると displayable オブジェクトを返します。すべての位置引数、プロパティーとスタイルプロパティーはこの関数へ引数として渡されます。その他のキーワード引数も以下のようにこの関数へ渡されます。
これは displayable を返すべきです。 複数の displayable を返すと最も外側の displayable の _main 属性が "main" displayable に設定され、子はこれに追加されます。
この displayable のスタイルのベース名です。 スタイルプロパティーが指定されないと、これにスタイル接頭辞を追加します。結果のスタイルが displayable 関数に style
キーワード引数として渡されます。
この displayable の子の数で、次のうちのひとつです。 :
displayable は子を受け取りません。
displayable はひとつ子を受け取ります。ひとつ以上の子が与えられると、子は Fixed に配置されます。
displayable ひとつ以上の子を受け取ります。
関数が他のどこからも参照されない Displayable を返すなら True にするべきです。
以下の引数はキーワード引数を使って渡されるべきです。
True で、 displayable が以前の displayable を置き換えるなら、新しい displayable に対するパラメーターとしてその displayable は渡されます。
その displayable に与えられるキーワード引数のデフォルトの設定です。
True なら ui と position プロパティーがデフォルトで追加されます。
以下のメソッドを呼び出して、追加する位置引数とプロパティーを指定出来るオブジェクトを返します。それらの各メソッドは同様に呼び出せるオブジェクトを返し、メソッドをひとつなぎに出来ます。
add_positional
(name) linkname の位置引数を追加します。
add_property
(name) linkname のプロパティーを追加します。プロパティーはキーワード引数として渡されます。
add_style_property
(name) linkname で終り、さまざまなスタイルプロパティー接頭辞を接頭辞にするプロパティーの一群を追加します。例えば ("size") で呼び出されると、size, idle_size, hover_size などを定義します。
add_prefix_style_property
(prefix, name) linkprefix とスタイルプロパティーの接頭辞、 name で構成された名前を持つプロパティーの一群を追加します。例えば prefix が text_ name が size で呼び出されると、これは text_size, text_idle_size, text_hover_size などを作成します。
add_property_group
(group, prefix='') linkprefix を接頭辞に持つプロパティーのグループを追加します。 Group は次の文字列のうちの一つです。 :
これらは style-properties のグループに対応します。グループは "ui" にも出来、その場合 ユーザーインターフェイス共通のプロパティー を追加します。
renpy.
register_sl_statement
(name, children=u'many', screen=None) linkRen'Py にユーザー定義のスクリーン言語ステートメントを登録します。
これは単語でなくてはいけません。そのユーザー定義スクリーン言語ステートメントの名前になります。
このユーザー定義ステートメントが受け取る子の数です。これは 0, 1 または 0 以上を表す "many" であるべきです。
使用するスクリーンです。未指定では name になります。
追加する位置引数とプロパティーを指定出来るオブジェクトを返します。このオブジェクトは renpy.register_sl_displayable
が返すオブジェクト同様に add_ メソッドを持ちます。
ユーザー定義スクリーン言語ステートメントの例として、上記で指定した titlewindow
ステートメントの実装を示します。先ず、 01custom.rpy のような初期に読み込まれるファイルの python early
ブロックでステートメントは登録されなければなりません。以下のように登録します。
python early:
renpy.register_sl_statement("titledwindow", children=1).add_positional("title").add_property("icon").add_property("pos")
次にユーザー定義ステートメントを実装するスクリーンを定義します。このスクリーンはどのファイルでも定義出来ます。そのようなスクリーンの 1 例です。
screen titledwindow(title, icon=None, pos=(0, 0)):
drag:
pos pos
frame:
background "#00000080"
has vbox
hbox:
if icon is not None:
add icon
text title
null height 15
transclude
add_property_group のような大きなプロパティ―グループを使用するなら、 **properties シンタックスを使用してどこかに properties キーワードを使うとよいです。例
screen titledwindow(title, icon=None, **properties):
frame:
# When background not in properties it will use it as default value.
background "#00000080"
properties properties
has vbox
hbox:
if icon is not None:
add icon
text title
null height 15
transclude