NarraLeaf

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();

本页目录