SusParallaxStack

Стек слоёв от указателя: bg → pattern → subject → ui (tips) → chrome.
Пакет
SusKit · Атомы (коммерческий)
Свойства
| Имя | Тип | По умолчанию | |
|---|---|---|---|
PatternAmp | Prop<float> | 8f | |
SubjectAmp | Prop<float> | 14f | |
UiAmp | Prop<float> | 22f | |
Enabled | Prop<bool> | true | |
Easing | Prop<float> | 0.08f | |
MinFps | Prop<float> | 24f | |
PauseOnFocusLoss | Prop<bool> | false |
Слоты
События
| Имя | Поле | Payload |
|---|---|---|
ActiveChanged | OnActiveChanged | bool |
Хуки стиля
Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:
sus-parallax-stacksus-parallax-stack__bgsus-parallax-stack__chromesus-parallax-stack__layersus-parallax-stack__layerssus-parallax-stack__patternsus-parallax-stack__subjectsus-parallax-stack__tipssus-parallax-stack__uisus-parallax-stack--off
Использование
var stack = new SusParallaxStack();
stack.EnsureLayers();
stack.Subject.Add(characterArt);
stack.Chrome.Add(nav);
stack.SetAmps(patternAmp: 8f, subjectAmp: 14f, uiAmp: 4f);| Prop / API | Роль |
|---|---|
PatternAmp / SubjectAmp / UiAmp | Амплитуда parallax (px) |
Enabled | Главный выключатель. По умолчанию true |
PauseOnFocusLoss | Замирать, пока у окна приложения нет фокуса. По умолчанию false |
SetLayers(layers) | Заменить слои-картинки (см. ниже) |
TrackPointer(source) | Следить также за указателем над другим элементом |
IsActive / OnActiveChanged | Двигается ли стек прямо сейчас, и фронты этого состояния |
Слои-картинки
SetLayers принимает список SusParallaxLayer (картинка, глубина, необязательный USS-класс). Слои живут в хосте sus-parallax-stack__layers между Bg и Pattern; каждый слой — абсолютный, прозрачный для указателя элемент sus-parallax-stack__layer, который смещается на Depth, умноженное на смещение указателя. Depth задаётся в пикселях у края стека: 0 — неподвижно, больше — ближе, отрицательное значение движется против указателя. Размер, позиция и выпуск за край задаются в USS. null или пустой список убирает хост, и у стека снова пять встроенных слоёв.
stack.SetLayers(new List<SusParallaxLayer>
{
new SusParallaxLayer(Background.FromTexture2D(sky), depth: 4f),
new SusParallaxLayer(Background.FromTexture2D(ridge), depth: 12f, className: "my-backdrop__ridge"),
});
// A backdrop sits under the screen content and gets no pointer events of its own:
// follow the pointer over the screen root instead.
stack.TrackPointer(screenRoot);
stack.PauseOnFocusLoss.Value = true;TrackPointer переводит позицию указателя в собственный прямоугольник стека; когда указатель уходит с источника, слои плавно возвращаются к нулю. Колбэки живут, только пока стек прикреплён к панели. null прекращает слежение, а новый источник заменяет старый.
С включённым PauseOnFocusLoss окно без фокуса ставит стек на паузу: слои стоят в нуле, тикер останавливается, а корень получает sus-parallax-stack--unfocused. Возврат фокуса возобновляет движение при следующем перемещении указателя.
Reduce motion
Пока включён SusMotion.Reduce, стек замирает так же: слои в нуле, тикера нет, класс sus-parallax-stack--reduced на корне. Выключение флага возобновляет движение при следующем перемещении указателя.
Заметки
- Вызовите
EnsureLayers()после построения, чтобы получить хосты слоёв (Bg,Pattern,Subject,Ui,TipHost,Chrome). - Визуальное оформление (арт, стекло) задаётся в USS потребителя.
Смотрите также Layout recipes.