變換特性 link

變換特性(transform property)可以被 變換 使用,影響可視組件的繪製。 變換特性常用於 ATLTransform 類中。

transform特性列表 link

transform存在以下特性(property)。

當給定的數據類型當作一個坐標 position 時,其可能是一個整型、 absolute 類型或者浮點型。 如果是一個浮點型,其可以用作某塊區域(用作坐標 pos )或者可視組件(用作錨點 anchor )的比例值。

需要注意的是,並非所有特性都是完全獨立的。例如, xalignxpos 都會更新同一批底層數據。 在parallel語句中,對相同的數據,最多只允許一個語句塊進行調整。 (這些可能都是在同一個語句塊中。)angle和radius特性同時設置水平和垂直坐標。

坐標 link

pos link
Type:

(position, position)

Default:

(0, 0)

相對坐標,以整個區域左上角為原點。

xpos link
Type:

position

Default:

0

水平坐標,以整個區域的最左端為坐標零點。

ypos link
Type:

position

Default:

0

垂直坐標,以整個區域的最上端為坐標零點。

anchor link
Type:

(position, position)

Default:

(0, 0)

錨點坐標,以可視組件左上角為原點。

xanchor link
Type:

position

Default:

0

錨點的水準坐標,以可視組件最左端為坐標零點。

yanchor link
Type:

position

Default:

0

錨點的垂直位置,以可視組件最上端為坐標零點。

align link
Type:

(float, float)

Default:

(0.0, 0.0)

將pos和anchor設置為相同的值。

xalign link
Type:

float

Default:

0.0

將xpos和xanchor設置為相同的值。

yalign link
Type:

float

Default:

0.0

將ypos和yanchor設置為相同的值。

offset link
Type:

(absolute, absolute)

Default:

(0, 0)

可視組件在兩個方向偏離的像質數。向右和向下偏離時是正數。

xoffset link
Type:

absolute

Default:

0

可視組件在水平方向偏離的像質數。向右偏離時是正數。

yoffset link
Type:

absolute

Default:

0

可視組件在垂直方向偏離的像質數。向下偏離時是正數。

xycenter link
Type:

(position, position)

Default:

(0.0, 0.0)

等效於將pos的值設置為該特性的值,並同時將archor設置為(0.5, 0.5)。

xcenter link
Type:

position

Default:

0.0

等效於將pos的值設置為該特性的值,並同時將xanchor設置為0.5。

ycenter link
Type:

position

Default:

0.0

等效於將pos的值設置為該特性的值,並同時將yanchor設置為0.5。

subpixel link
Type:

boolean

Default:

False

若為True,子組件將根據子像素(subpixel)確定位置。

子像素位置還影響寫入最終像素的顏色(包括不透明度),但具體寫入哪個像素依然是不變的。 如果子像素位置還會發生移動(很常見的情況),移動方向上的即將進入的界面圖像應該包含帶透明度混合的邊界。

例如,某個角色立繪在水平方向移動,最好在左右兩側設置半透明的邊界。 對於實際大小超過整個可視區域的背景圖就沒必要使用該特性,反正邊界部分是看不到的。

(譯者註:subpixel往往跟MSAA相關。具體內容請借助搜尋引擎學習。)

旋轉 link

rotate link
Type:

float or None

Default:

None

若值為None,不會進行旋轉。否則,圖像會按指定的角度順時針旋轉。 根據下面會提到的rotate_pad的配置值,旋轉可視組件會導致組件尺寸改變。 xanchor和yanchor不為0.5的情況下,旋轉整個可視組件會讓組件相對整個界面的坐標發生變化。

rotate_pad link
Type:

boolean

Default:

True

若該值為True,一個可以旋轉的可視組件就會使用原本的寬度和高度填充旋轉矩形,並確保旋轉時不會改變組件的尺寸。 若該值為False,transform會給定某個能應用於可視組件的最小尺寸,更適合用於自動匹配的旋轉。

transform_anchor link
Type:

boolean

Default:

False

若該值為True,錨點會定位在關聯的子組件上,當子組件發生變換時拉伸並旋轉。

實際效果是,當子組件拉伸或旋轉時,這項值可以指定子組件以指定的錨點拉伸或旋轉。

縮放與翻轉 link

zoom link
Type:

float

Default:

1.0

該值根據係數對可視組件進行縮放。

xzoom link
Type:

float

Default:

1.0

該值根據係數對可視組件在水平方向進行縮放。負值可以讓圖像水平翻轉(即與原圖像互為左右鏡像)。

yzoom link
Type:

float

Default:

1.0

該值根據係數對可視組件在垂直方向進行縮放。負值可以讓圖像垂直翻轉(即與原圖像互為上下鏡像)。

像素效果 link

nearest link
Type:

boolean

Default:

None

若該值為True,可視組件及其子組件會使用近鄰取樣(nearest-neighbor)過濾繪製。 若該值為False,可視組件及其子組件使用雙線性(bilinear)過濾繪製。 若該值為None,繪製方式從父組件繼承,或者採用 config.nearest_neighbor 配置(預設值是False)。

alpha link
Type:

float

Default:

1.0

該值控制可視組件的不透明度。

alpha變換(transform)會分別作用於每個圖像所包含的子組件。 在子組件存在重疊部門的情況,這可能會導致一些不期望出現的結果,比如透過衣服看到角色之類的。 Flatten() 類可視組件可以解決這些問題。

additive link
Type:

float

Default:

0.0

該值控制Ren’Py加性混合後的表現效果。該值為1.0時,Ren’Py使用ADD操作器(operator)繪製;該值為0.0時,Ren’Py使用OVER操作器(operator)繪製。

加性混合會分別作用於transform的每一個子組件。

完全的加性混合不會改變目標圖像的alpha通道值,並且添加上去的圖像可能不是可見的, 前提是那些圖像沒有直接繪製在某個不透明的表面上。 (某些複雜的操作,像 Flatten()Frame() 和某些轉場,使用加性混合可能會出現問題。)

matrixcolor link
Type:

None 或 矩陣 或 MatrixColor對象

Default:

None

若非None,該特性值將應用到所有子組件並重新計算顏色。只有使用MatrixColor並且滿足結構性相似的前提下,才能進行插值計算。 詳見 Matrixcolor

blur link
Type:

None 或 float

Default:

None

使用 blur 像質數模糊圖像的子組件, blur 數值不超過可視組件的邊長。 Ren’Py不同版本的模糊細節可能存在差異。模糊的結果可能存在瑕疵,尤其是模糊數值不斷發生修改的情況下。

極坐標 link

around link
Type:

(position, position)

Default:

(0.0, 0.0)

該特性指定了一個起點坐標,以整個區域左上角做原點。(根據 angleradius 計算出的)極向量範圍內的區域將被繪製。 以上兩者共同決定了 pos 的值。

angle link
Type:

float

該特性給出極坐標系下某個坐標的角度資訊。角度的單位是度(degree),0度時在螢幕正上方,90度時在螢幕右方。

Ren’Py會將角度的值控制在0到360度的區間內,有0度不包含360度。 當數值超過這個區間範圍時,Ren’Py使用前會處理成等效角度。(角度值設置為-10度,等效於將角度設置為350度。)

radius link
Type:

position

極坐標系下坐標的半徑。

如果值是浮點數,會被自動縮小到剛好能適用於寬度和高度的某個值。

極坐標系的錨點 link

Note

使用極坐標系時同時也啟用了錨點。通常最簡單的處理就是將 anchor 設置為(0.5, 0.5),即可視組件的中心。

anchoraround link
Type:

(position, position)

該特性指定了一個起點坐標,以整個區域左上角做原點。(根據 anchorangleanchorradius 計算出的)極向量範圍內的區域將被繪製。 以上兩者共同決定了 anchor 的值。

anchorangle link
Type:

(float)

極坐標系下錨點坐標的角度。角度的單位是度(degree),0度表示正上方,90度表示右方。

Ren’Py會將角度的值控制在0到360度的區間內,有0度不包含360度。 當數值超過這個區間範圍時,Ren’Py使用前會處理成等效角度。(角度值設置為-10度,等效於將角度設置為350度。)

anchorradius link
Type:

(position)

極坐標系下錨點坐標的半徑。 若該值是浮點數,將乘以可視組件的寬和高,計算得到結果。如果可視組件的高和寬不相等,計算結果不是absolute類型,最終會沿橢圓旋轉。 因此,推薦將該特性設置為 intabsolute 類型的值。

剪裁與重新調整尺寸 link

crop link
Type:

None 或 (position, position, position, position)

Default:

None

若該值非None,會使用給定的矩形剪裁可視組件。指定的矩形是一個(x, y, width, height)形式的元組。

如果各種corner特性與crop特性同時出現,crop的優先度高於各種corner特性。

corner1 link
Type:

None 或 (position, position)

Default:

None

若該值非None,指定剪裁框的左上角坐標。剪裁時優先使用各corner特性值。 若crop_relative為啟用狀態,且該值為浮點型與子組件的尺寸相關。

corner2 link
Type:

None 或 (position, position)

Default:

None

若該值非None,指定剪裁框的右下角坐標。剪裁時優先使用各corner特性值。 若crop_relative為啟用狀態,且該值為浮點型與子組件的尺寸相關。

xysize link
Type:

None 或 (position, position)

Default:

None

若該值非None,將可視組件伸縮至給定的尺寸。等效於,將入參元組的第一元素賦值給 xsize,將入參元祖的第二元素賦值給 ysize

該值受到 fit 影響。

xsize link
Type:

None 或 position

Default:

None

若該值非None,可是組件會按照給定的寬度縮放。

該值受到 fit 影響。

ysize link
Type:

None 或 position

Default:

None

若該值非None,可是組件會按照給定的高度縮放。

該值受到 fit 影響。

fit link
Type:

None 或 string

Default:

None

若該值非None,會按下面表格的方式調整尺寸。表格中的“維度”分別為:

  • xsizeysize 都不為None,這兩項都會用作維度。

  • xsizeysize 只有其中一項不是None,則兩個維度都使用非None項的值。

  • xsizeysize 都為None,且fit項不是None,則根據Transform中的寬度和高度作為兩個維度的值。

若fit、xsize和ysize都是None,則該特性不生效。

描述

contain

在不超過任何維度尺寸的原則下近可能大。保持寬高比。

cover

在不超過任何維持尺寸的原則下盡可能小。保持寬高比。

None 或 fill

將可視組件拉伸/擠壓,以匹配各維度指定大小。

scale-down

類似 contain,但不會增加可視組件的尺寸。

scale-up

類似 cover,但不會增加可視組件的尺寸。

全景圖和平鋪 link

xpan link
Type:

None 或 float

Default:

None

若該值非None,其被看作某個360度全景圖中的經度。圖像中央是0度,圖像左端和右端分別是-180度和180度。

ypan link
Type:

None 或 float

Default:

None

若該值非None,其被看作某個360度全景圖中的緯度。圖像中央是0度,圖像頂部和底部分別是-180度和180度。

xtile link
Type:

int

Default:

1

圖像水平方向使用圖像平鋪的次數。

ytile link
Type:

int

Default:

1

圖像垂直方向使用圖像平鋪的次數。

轉場 link

詳見 ATL轉場

delay link
Type:

float

Default:

0.0

如果該變換(transform)用作轉場(transition),這個值定義了轉場時間。

events link
Type:

boolean

Default:

True

若該值為True,事件消息會傳給該變換(transform)的子組件。若該值為False,事件消息會被屏蔽。 (這個機制可以用在ATL變換中,放置事件消息達到某些old_widget。)

其他 link

fps link
Type:

float or None

Default:

None

若非None,該特性會更該其所在變換的最小時間顆粒。 例如某個變換的fps為10,那麼變換的時間最小值至少為0.1秒。 該特性可以用於模擬低刷新率。

show_cancels_hide link
Type:

boolean

Default:

True

通常,某個同名或帶同名標籤(tag)的可視組件或界面,從隱藏狀態轉為顯示狀態時,將移除組件或界面的隱藏屬性,變換中hide部分的效果將取消。 如果該特性為False,則不會中斷和取消hide變換,而是會將hide變換的效果處理完。

此外,其他幾組變換特性可以在文件其他地方找到:

3D舞台特性:

perspectivepoint_toorientationxrotateyrotatezrotatematrixanchormatrixtransformzposzzoom

基於模型渲染特性:

blendmeshmesh_padshader

GL特性:

GL特性

uniforms:

u_ 開頭的特性可以用於 自訂著色器 中的uniform變數。

特性生效順序 link

這些特性按照以下順序生效:

  1. fps

  2. mesh, blur

  3. tile

  4. pan

  5. crop, corner1, corner2

  6. xysize, size, maxsize

  7. zoom, xzoom, yzoom

  8. point_to

  9. orientation

  10. xrotate, yrotate, zrotate

  11. rotate

  12. zpos

  13. matrixtransform, matrixanchor

  14. zzoom

  15. perspective

  16. nearest, blend, alpha, additive, shader

  17. matrixcolor

  18. GL Properties, Uniforms

  19. position properties

  20. show_cancels_hide

過期的變換特性 link

Warning

下列特性不應再使用近期開發的遊戲中,可能會與其他功能特性發生衝突。 暫時保留這些特性是考慮到相容性。

alignaround link
Type:

(float, float)

anchoraroundanchoraround 設置為相同的值。

crop_relative link
Type:

boolean

Default:

True

若為False,crop 的值將作為像質數的值,而不再是原圖像的寬度或高度的比例。

如果計算結果是某個絕對數值像質數,應該將 absolute() 實例應用到 crop 特性,而不使用crop_relative特性。 必要時,不確定類型的數值可以傳給 absolute() 函數處理。

size link
Type:

None or (int, int)

Default:

None

xysize 的一個舊版本,將浮點值作為像質數的值進行插值操作。

maxsize link
Type:

None or (int, int)

Default:

None

若該值非None,可以使可視組件在box當中以合適的尺寸放大或縮小顯示,同時保持橫縱比。(請注意,這意味著長或寬其中一個尺寸可能小於此box的尺寸。)

若要實現同樣結果,可以將 xysize 設定為同樣的值,並把 fit 設置為“contain”。