useSuspendAdvance
useSuspendAdvance 钩子,在弹层打开期间挂起当前对话行的推进
在你自己的浮层打开期间,把当前行按住不动。只要还有一个挂起未释放,舞台点击、推进键和跳过键都不会到达对话框。自 0.27.0 起可用
function useSuspendAdvance(active: boolean): void;画在行上方的浮层必须阻止行在它底下推进,否则用来关闭浮层的那一次按键会直接跳到下一行
用法
import { useSuspendAdvance, WordRenderProps } from "narraleaf-react";
function GlossaryTerm({children, revealed, data}: WordRenderProps<{entry: string}>) {
const [open, setOpen] = useState(false);
useSuspendAdvance(open);
return (
<span onClick={() => revealed && setOpen(value => !value)}>
{children}
{open && <Definition entry={data.entry} />}
</span>
);
}active: boolean- 此刻是否按住这一行- 返回
void
行为
active变为true时取得挂起,变为false或组件卸载时释放。浮层消失后不会把游戏卡住- 挂起可嵌套。同时可以有多个,最后一个释放后行才恢复
- 只有推进被挂起。打字机、正在播放的过渡和音频都不受影响
在 React 之外
GameState.suspendAdvance 做同样的事,并把释放函数作为返回值
const release = gameState.suspendAdvance();
// ...
release();