Своё действие для плавного скрытия
Меняем прозрачность элемента за заданное время.
Создадим FadeAction. configDecoder проверяет длительность из JSON, inputDecoder — прозрачность, переданную в runAction.
import { BaseTypedAction } from '@gamedevland/engine/layouts';
import { SchemaDecoder } from '@gamedevland/engine/validation';
export class FadeAction extends BaseTypedAction<
{ duration: number },
{ alpha: number }
> {
protected override readonly configDecoder = SchemaDecoder.object({
duration: SchemaDecoder.number({ min: 0 }),
});
protected override readonly inputDecoder = SchemaDecoder.object({
alpha: SchemaDecoder.number({ min: 0, max: 1 }),
});
protected override async execute(input: { alpha: number }): Promise<void> {
await this.ownTween(
this.node.tweens.alphaTo(input.alpha, this.config.duration),
);
}
}
Зарегистрируем класс как FadeAction. В actions.fade укажем type: 'FadeAction' и data: { duration: 0.2 }. Вызов runAction('fade', { alpha: 0 }) скроет узел за 0,2 секунды.
Настройкаduration: 0.2
Запускalpha: 0
РезультатУзел плавно исчезает