每个内置预设都可直接使用:它包含删除与恢复动画,以及两个阶段对应的音频。在内置预设中,恢复时会反向播放同一个声音。自定义配置则可以为删除和恢复选择不同的声音。
四个预设
| 名称 | 删除 | 恢复 | 时长 |
|---|---|---|---|
dust | 元素化为向上飘散的尘埃。 | 尘埃在元素最终几何位置聚合。 | 850 ms |
scatter | 细小碎片从左到右消散,并以向上为主扩散。 | 碎片从同一散布区域聚合。 | 1100 ms |
vapor | 表面从顶部快速升起,形成逐渐收缩的蒸汽流。 | 收束的蒸汽流凝结为可见元素。 | 750 ms |
wind | 一股长气流把粒子带向一侧。 | 同一方向的气流把粒子送回。 | 2075 ms |
remove() 选择删除阶段,restore() 选择恢复阶段。预设音频自动启用,并与所选视觉效果对齐。
effects.remove(card, { preset: 'dust' });
effects.restore(card, { preset: 'dust' });
effects.remove(card, { preset: 'scatter' });
effects.restore(card, { preset: 'scatter' });
effects.remove(card, { preset: 'vapor' });
effects.restore(card, { preset: 'vapor' });
effects.remove(card, { preset: 'wind' });
effects.restore(card, { preset: 'wind' });
选择实例预设
构造器必须接收一个预设或一个自定义效果。单次操作可选择另一个完整预设:
const effects = new Disintegrator({
preset: 'vapor',
});
effects.remove(firstElement); // vapor
effects.remove(secondElement, { preset: 'scatter' });
effects.restore(insertedElement, { preset: 'wind' });
使用记住的预设恢复
保留节点重新插入后,restore() 会恢复删除时选择的完整预设,包括恢复音频。
const removal = effects.remove(card, {
preset: 'wind',
retain: true,
});
await removal.finished;
const retained = effects.take(removal.removalId!);
if (retained) {
list.prepend(retained);
await effects.restore(retained).finished; // wind 恢复
}
确实需要另一个完整预设时,再向 restore() 传入 preset。若改为传入内联 effect,会选择自定义视觉效果;除非该操作同时提供自己的声音,否则它保持静音。
将预设静音
内置音频不需要启用开关。若要保留预设动画但关闭实例或单次操作的声音,请传入 sound: false:
const silent = new Disintegrator({ preset: 'dust', sound: false });
effects.remove(card, { preset: 'vapor', sound: false });
预设有意保持原子性:它的动画与音频已预先同步,只替换其中一部分很可能会破坏时序。因此,预设不能与另一视觉效果或不同音频组合。若要使用内置粒子运动搭配自定义声音,请把预设的 effect 当作自定义效果,并提供显式声音对。