Свойства трансформации
Свойства трансформации используются Трансформации для влияния на то, как отображается displayable. Обычно они задаются с помощью ATL или класса Transform.
Список свойств трансформации
Существуют следующие свойства трансформации.
Когда в качестве типа указана position, её относительная компонента интерпретируется как доля от размера содержащей области (для pos) или от размера отображаемого объекта (displayable) (для anchor).
Обратите внимание, что не все свойства независимы. Например, xalign и xpos оба обновляют одни и те же внутренние данные. В инструкции parallel не более одного блока должно изменять свойства, использующие общие данные. Свойства угла и радиуса устанавливают как горизонтальное, так и вертикальное положение.
Позиционирование
- pos
- Type:
(position, position)
- Default:
(0, 0)
Позиция относительно верхнего левого угла содержащей области.
- xpos
- Type:
position
- Default:
0
Горизонтальная позиция относительно левого края содержащей области.
- ypos
- Type:
position
- Default:
0
Вертикальная позиция относительно верхнего края содержащей области.
- anchor
- Type:
(position, position)
- Default:
(0, 0)
Позиция якоря относительно верхнего левого угла отображаемого объекта (displayable).
- xanchor
- Type:
position
- Default:
0
Горизонтальная позиция якоря относительно левого края отображаемого объекта (displayable).
- yanchor
- Type:
position
- Default:
0
Вертикальная позиция якоря относительно верхнего края отображаемого объекта (displayable).
- align
- Type:
(float, float)
- Default:
(0.0, 0.0)
Эквивалентно установке одинаковых значений для pos и anchor.
- xalign
- Type:
float
- Default:
0.0
Эквивалентно установке этого значения для xpos и xanchor.
- yalign
- Type:
float
- Default:
0.0
Эквивалентно установке этого значения для ypos и yanchor.
- offset
- Type:
(absolute, absolute)
- Default:
(0, 0)
Количество пикселей, на которое смещается отображаемый объект (displayable) в каждом направлении. Положительные значения смещают вправо-вниз.
- xoffset
- Type:
absolute
- Default:
0
Количество пикселей, на которое смещается отображаемый объект (displayable) в горизонтальном направлении. Положительные значения смещают вправо.
- yoffset
- Type:
absolute
- Default:
0
Количество пикселей, на которое смещается отображаемый объект (displayable) в вертикальном направлении. Положительные значения смещают вниз.
- xycenter
- Type:
(position, position)
- Default:
(0.0, 0.0)
Эквивалентно установке pos в значение этого свойства, а anchor в (0.5, 0.5).
- xcenter
- Type:
position
- Default:
0.0
Эквивалентно установке xpos в значение этого свойства, а xanchor в 0.5.
- ycenter
- Type:
position
- Default:
0.0
Эквивалентно установке ypos в значение этого свойства, а yanchor в 0.5.
- subpixel
- Type:
boolean
- Default:
False
Если True, дочерний элемент будет размещён с использованием субпиксельного позиционирования.
Субпиксельное позиционирование влияет на цвета (включая прозрачность), которые отрисовываются в пикселях, но не на то, какие пиксели отрисовываются. Когда субпиксельное позиционирование используется в сочетании с движением (что является обычным случаем), изображение должно иметь прозрачные границы в тех направлениях, в которых оно может двигаться, если эти края видны на экране.
Например, если спрайт персонажа движется горизонтально, имеет смысл сделать прозрачные границы слева и справа. Они могут не понадобиться при панорамировании фона, выходящего за пределы видимой области, так как края не будут видны.
Вращение
- rotate
- Type:
float or None
- Default:
None
Если None, вращение не происходит. В противном случае, изображение будет повёрнуто на указанное количество градусов по часовой стрелке. Вращение отображаемого объекта (displayable) приводит к изменению его размера в соответствии с настройкой rotate_pad, описанной ниже. Это может вызвать изменение позиционирования, если xanchor и yanchor не равны 0.5.
- rotate_pad
- Type:
boolean
- Default:
True
Если True, то повёрнутый отображаемый объект (displayable) дополняется отступами так, чтобы его ширина и высота были равны гипотенузе исходных ширины и высоты. Это гарантирует, что трансформация не изменит размер при вращении её содержимого. Если False, трансформация получит минимальный размер, который вмещает преобразованный displayable. Это больше подходит для фиксированных вращений.
- transform_anchor
- Type:
boolean
- Default:
False
Если true, точка якоря располагается на обрезанном дочернем элементе и масштабируется и вращается вместе с ним. Фактически, это делает якорь точкой, вокруг которой вращается и масштабируется дочерний элемент.
Масштабирование и отражение
- zoom
- Type:
float
- Default:
1.0
Вызывает масштабирование отображаемого объекта (displayable) на указанный коэффициент.
- xzoom
- Type:
float
- Default:
1.0
Вызывает горизонтальное масштабирование отображаемого объекта (displayable) на указанный коэффициент. Отрицательное значение вызывает горизонтальное отражение изображения.
- yzoom
- Type:
float
- Default:
1.0
Вызывает вертикальное масштабирование отображаемого объекта (displayable) на указанный коэффициент. Отрицательное значение вызывает вертикальное отражение изображения.
Пиксельные эффекты
- nearest
- Type:
boolean
- Default:
None
Если True, отображаемый объект (displayable) и его дочерние элементы отрисовываются с использованием фильтрации по ближайшему соседу. Если False, они отрисовываются с использованием билинейной фильтрации. Если None, значение наследуется от родительского элемента или берётся из
config.nearest_neighbor, которое по умолчанию равно False.
- alpha
- Type:
float
- Default:
1.0
Управляет непрозрачностью отображаемого объекта (displayable).
Трансформация альфа-канала применяется к каждому изображению, составляющему дочерний элемент трансформации, независимо. Это может привести к неожиданным результатам, когда дочерние элементы перекрываются, например, к просвечиванию персонажа сквозь одежду. Displayable
Flatten()может помочь в решении этих проблем.
- additive
- Type:
float
- Default:
0.0
Управляет степенью аддитивного смешивания, выполняемого Ren'Py. При значении 1.0 Ren'Py рисует с использованием оператора ADD. При 0.0 Ren'Py рисует с использованием оператора OVER.
Аддитивное смешивание выполняется для каждого дочернего элемента трансформации независимо.
Полностью аддитивное смешивание не изменяет альфа-канал назначения, и аддитивные изображения могут быть не видны, если они не нарисованы непосредственно на непрозрачной поверхности. (Сложные операции, такие как viewport,
Flatten(),Frame()и некоторые переходы, могут вызывать проблемы с аддитивным смешиванием.)
- matrixcolor
- Type:
None or Matrix or MatrixColor
- Default:
None
Если не None, значение этого свойства используется для перекрашивания всего, что рисуют дочерние элементы этой трансформации. Интерполяция поддерживается только при использовании MatrixColors, и если эти MatrixColors структурно схожи. Смотрите Matrixcolor для получения дополнительной информации.
- blur
- Type:
None or float
- Default:
None
Размывает дочерний элемент этой трансформации на blur пикселей, вплоть до границы displayable. Точные детали размытия могут меняться между версиями Ren'Py, и размытие может проявлять артефакты, особенно когда размываемое изображение меняется.
Размытие вызывает "сплющивание" (flatten) своего дочернего элемента, при котором он отрисовывается на прозрачном фоне перед применением размытия.
Полярное позиционирование
- around
- Type:
(position, position)
- Default:
(0.0, 0.0)
Определяет начальную точку относительно верхнего левого угла содержащей области, из которой будет проведён полярный вектор (вычисленный из
angleиradius). Сумма этих двух значений даёт итоговое свойствоpos.
- angle
- Type:
float
Задаёт угловую компоненту позиции, указанной в полярных координатах. Измеряется в градусах, где 0 соответствует верху экрана, а 90 — правому краю.
Ren'Py ограничивает этот угол в диапазоне от 0 до 360 градусов, включая 0, но не включая 360. Если установлено значение вне этого диапазона, оно будет приведено к эквивалентному углу в этом диапазоне перед использованием. (Установка значения -10 эквивалентна установке 350.)
- radius
- Type:
position
Радиальная компонента позиции, заданной в полярных координатах.
Если это float, значение будет масштабировано до меньшего из ширины и высоты, доступных трансформации.
Полярное позиционирование якоря
Примечание
Хотя использовать полярные координаты для позиционирования якоря возможно, часто удобнее просто установить anchor в (0.5, 0.5) и позиционировать центр вашего displayable.
- anchoraround
- Type:
(position, position)
Определяет начальную точку относительно верхнего левого угла displayable, из которой будет проведён полярный вектор (вычисленный из
anchorangleиanchorradius). Сумма этих двух значений даёт итоговое свойствоanchor.
- anchorangle
- Type:
(float)
Угловая компонента полярных координат якоря. Указывается в градусах, где 0 — верх, а 90 — право.
Ren'Py ограничивает этот угол в диапазоне от 0 до 360 градусов, включая 0, но не включая 360. Если установлено значение вне этого диапазона, оно будет приведено к эквивалентному углу в этом диапазоне перед использованием. (Установка значения -10 эквивалентна установке 350.)
- anchorradius
- Type:
(position)
Радиальная компонента полярных координат якоря.
Если это float, значение масштабируется горизонтально и вертикально под размер и форму displayable: если высота не равна ширине, радиус, который не является строго абсолютным, приведёт к эллиптическому движению при изменении anchorangle. По этой причине рекомендуется передавать этому свойству только значения типа
intилиabsolute().
Обрезка и изменение размера
- crop
- Type:
None or (position, position, position, position)
- Default:
None
Если не None, вызывает обрезку displayable до указанного прямоугольника. Прямоугольник задаётся как кортеж (x, y, width, height), где x и y — это координаты верхнего левого угла прямоугольника относительно верхнего левого угла дочернего элемента. Все значения могут выходить за границы исходного изображения, при этом область снаружи становится прозрачной, однако width и height должны быть положительными.
Если заданы и corners, и crop, crop имеет приоритет.
- corner1
- Type:
None or (position, position)
- Default:
None
Если не None, задаёт верхний левый угол области обрезки. Значения могут выходить за границы исходного изображения. Crop имеет приоритет над corners.
- corner2
- Type:
None or (position, position)
- Default:
None
Если не None, задаёт правый нижний угол области обрезки. Значения могут выходить за границы исходного изображения, но не должны быть меньше
corner1. Crop имеет приоритет над corners.
- xysize
- Type:
None or (position, position)
- Default:
None
Если не None, вызывает масштабирование displayable до указанного размера. Это эквивалентно установке свойств
xsizeиysizeв первую и вторую компоненты соответственно.На это влияет свойство
fit.
- xsize
- Type:
None or position
- Default:
None
Если не None, вызывает масштабирование displayable до указанной ширины.
На это влияет свойство
fit.
- ysize
- Type:
None or position
- Default:
None
Если не None, вызывает масштабирование displayable до указанной высоты.
На это влияет свойство
fit.
- fit
- Type:
None or string
- Default:
None
Приводит к изменению размера displayable в соответствии с таблицей ниже. В контексте этой таблицы "размерами" являются:
Если и
xsize, иysizeне равны None, оба размера используются как размеры.Если только одно из этих свойств не равно None, оно используется как единственный размер.
В противном случае, если fit не равно None, в качестве размеров используется область, в которой содержится Transform.
Если fit, xsize и ysize все равны None, это свойство не применяется.
Значение
Описание
containМаксимально большой, не выходя за рамки размеров. Сохраняет соотношение сторон.
coverМинимально возможный, но соответствующий всем размерам или превосходящий их. Сохраняет соотношение сторон.
None или
fillРастягивает/сжимает displayable для точного соответствия размерам.
scale-downКак
contain, но никогда не увеличит размер displayable.scale-upКак
cover, но никогда не уменьшит размер displayable.
Панорамирование и замощение
- xpan
- Type:
None or float
- Default:
None
Если не None, интерпретируется как угол, который используется для горизонтального панорамирования по панорамному изображению с обзором 360 градусов. Центр изображения используется как нулевой угол, а левый и правый края — как -180 и 180 градусов соответственно.
- ypan
- Type:
None or float
- Default:
None
Если не None, интерпретируется как угол, который используется для вертикального панорамирования по панорамному изображению с обзором 360 градусов. Центр изображения используется как нулевой угол, а верхний и нижний края — как -180 и 180 градусов соответственно.
- xtile
- Type:
int
- Default:
1
Количество раз для замощения изображения по горизонтали.
- ytile
- Type:
int
- Default:
1
Количество раз для замощения изображения по вертикали.
Переходы
Смотрите ATL-переходы.
- delay
- Type:
float
- Default:
0.0
Если эта трансформация используется как переход, это его длительность. Смотрите ATL-переходы.
- events
- Type:
boolean
- Default:
True
Если True, события передаются дочернему элементу этой трансформации. Если False, события блокируются. (Это можно использовать в ATL-переходах, чтобы предотвратить попадание событий в old_widget.)
Прочее
- fps
- Type:
float or None
- Default:
None
Если не None, это изменяет время внутри трансформации, делая его дискретным. Например, если у трансформации fps равен 10, то время внутри трансформации будет округлено в меньшую сторону до ближайшего кратного 0.1. Это можно использовать для симуляции более низкой частоты кадров.
- show_cancels_hide
- Type:
boolean
- Default:
True
Обычно, когда отображаемый объект или экран с тем же тегом или именем, что и скрываемый, показывается, скрываемый объект или экран удаляется, отменяя трансформацию hide. Если это свойство установлено в False в трансформации hide, отмена не произойдёт, и трансформация hide завершится полностью.
Есть также несколько наборов свойств трансформации, которые документированы в других местах:
- Свойства 3D-сцены:
perspective,point_to,orientation,xrotate,yrotate,zrotate,matrixanchor,matrixtransform,zpos,zzoom- Свойства рендеринга на основе моделей:
- GL-свойства:
- Uniform-переменные:
Свойства, начинающиеся с
u_, являются uniform-переменными, которые могут использоваться пользовательскими шейдерами.
Порядок применения свойств
Свойства трансформации применяются в следующем порядке:
fps
mesh, blur
tile
pan
crop, corner1, corner2
xysize, size, maxsize
zoom, xzoom, yzoom
point_to
orientation
xrotate, yrotate, zrotate
rotate
zpos
matrixtransform, matrixanchor
zzoom
perspective
nearest, blend, alpha, additive, shader
matrixcolor
GL-свойства, Uniform-переменные
свойства позиционирования
show_cancels_hide
Устаревшие свойства трансформации
Предупреждение
Следующие свойства не следует использовать в современных играх, так как они могут конфликтовать с новыми функциями. Они оставлены здесь только для совместимости, вместе с новым способом достижения того же поведения.
- alignaround
- Type:
(float, float)
Устанавливает одинаковое значение для
anchor,aroundиanchoraround.
- crop_relative
- Type:
boolean
- Default:
True
Если False, компоненты типа float в
crop,corner1иcorner2интерпретируются как абсолютное число пикселей, а не как доля от ширины и высоты исходного изображения.Для выражения абсолютного числа пикселей следует передавать этим свойствам экземпляры
absolute(), а не использовать свойство crop_relative. При необходимости, значения сомнительного типа можно обернуть в вызовabsolute().
- size
- Type:
None or (int, int)
- Default:
None
Это старая версия
xysize, интерпретирующая значения с плавающей точкой как абсолютное число пикселей.
- maxsize
- Type:
None or (int, int)
- Default:
None
Если не None, вызывает масштабирование displayable так, чтобы он вписался в рамку этого размера с сохранением соотношения сторон. (Обратите внимание, что это означает, что один из размеров может быть меньше размера этой рамки.)
Для достижения того же результата передайте значения свойству
xysizeи установите свойствоfitв значение "contain".