可以使用Python創建新的變換(transform)和轉場(transition),並應用在Ren’Py腳本中。
變換(transform)是一個Python的可調用組件。當使用一個可視組件調用變換時,變換會返回另一個可視組件。
舉例:
init python:
# 這是一個使用right和left兩個默認變換的自訂變換。
def right_or_left(d):
if switch:
return right(d)
else:
return left(d)
ATL變換在Python中等效於一個Transform對象。
Transform
(child=None, function=None, **properties) link一個Transform對象會將各種操作應用到其子組件,操作包括:剪裁、旋轉、縮放和alpha混合等。一個Transform對象的域一一對應 變換特性 ,並應用到子組件。
若不是None,這是渲染變換效果時調用的函數。調用這個函數使用3個入參:
函數會返回一個延遲時間,單位為秒。在延遲時間之後這個函數會被再次調用。如果延遲時間是None,則會在下次互動之後立刻調用。
其他參數被視為設置變換特性的值。
hide_request
link當function函數被調用時,這項會被設置為True,標識變換效果被隱藏。
hide_response
link如果hide_request為True,這項會被設置為False,防止變換效果被隱藏。
set_child
(child) link使用一個新的 child 調用這個方法,child 成為變換的子組件。
update
() link當變換特性(property)欄位(field)在回調方法之外被更新時,這個方法會被調用,確保修改生效。
一個轉場(transition)是一個Python的可調用組件。使用兩個關鍵字入參調用,返回一個表現轉場效果的可視組件。這兩個關鍵字入參是:
返回的可視組件應該有一個 delay
欄位(field),域中的值表示轉場效果運行的時間,單位為秒。
舉例:
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)