NarraLeaf

TextEvent

タイプ中の台詞の途中でキャラクターの表情を切り替えたり、音を再生したりするインライントークンの`TextEvent`

0.16.0以降で使用できます。

TextEventは、タイプライターがその位置を表示した瞬間に、行の中で効果を発火させるインラインの対話トークンです。Pauseと同じように、Sentenceのワードストリームの中に存在します。それ自体は何もレンダリングせず、アクションでもないため、実行スタックに入ることは決してありません。

これがなければ、立ち絵は行と行の間でしか変えられず、文の途中で表情を変えたければ、文を2つに分割するしかありませんでした。

import {TextEvent} from "narraleaf-react";

scene.action([
    character.say([
        "Don't ",
        TextEvent.expression(aliceImage, ["angry"]),  // ちょうどここで立ち絵が切り替わる
        "test me.",
    ]),
    character.say([
        "...",
        TextEvent.sound(sting),                       // スティング音のみ、立ち絵は変わらない
    ]),
]);

閉じた効果の集合

テキストイベントが運ぶのは、キャラクターの表情切り替え、音の再生、またはその両方です。それがすべてであり、アクションのための汎用的な抜け道として設計されているわけではありません。

テキストイベントが行うことは実行スタックには積まれないため、セーブデータには何も追加されません。その効果は通常の要素の状態に乗るもので、この状態はシリアライズされ、所属するsayアクションが再評価されるたびに改めて適用されます。表情の切り替えにトランジションは伴いません。要素へ直接書き込まれる、瞬時の入れ替えです。

スキップと瞬間表示

タイプライターをスキップする場合、あるいはタイプ効果を伴わずに文全体を一度に表示する瞬間表示の場合でも、通り過ぎたトークンが取りこぼされることはありません。通過したすべてのトークンはソースの順序どおりに1度だけ発火するため、結果はタイプライターが1つずつ順に到達した場合と同じになります。画像は最後に通過したトークンが指定する見た目で終わり、通過した各音効果は1回ずつ再生されます。

同じ表示の中ですでに発火したトークンを再び通過しても、何も起こりません。そのため、プレイヤーがすでに読んだ行は、そのコンテナが再マウントされても効果を再生しません。このガードは実行時のみのものでセーブデータには含まれないため、ゲームをロードすると新たな表示が始まり、通常どおり発火します。

静的メソッド

expression

タイプライターがこの位置を表示したときに、画像の見た目を切り替えます。任意で音の再生を伴わせることもできます。

  • image: Image - 見た目を切り替える対象のImage
  • appearance: TextEventAppearance - タグの配列、または静的なsrc/色。Image.charが受け付けるのと同じ形式です。charと同様、裸の文字列はsrcとして解釈されるため、タグによる切り替えは必ず配列で書く必要があります。
  • options?: {sound?: Sound} - 同じ位置で再生するSound
  • 戻り値はTextEvent
TextEvent.expression(alice, ["angry"]);
TextEvent.expression(alice, ["angry"], {sound: slap});
TextEvent.expression(alice, "/images/alice-angry.png");

sound

タイプライターがこの位置を表示したときに、音だけを再生します。

  • sound: Sound - 再生するSound
  • 戻り値はTextEvent
TextEvent.sound(sting);

パブリックメソッド

constructor

明示的な効果記述子からテキストイベントを構築します。一般的なケースではexpressionsoundファクトリーの使用を優先してください。

  • config: TextEventConfig - 効果の記述子
new TextEvent({expression: {image: alice, appearance: ["angry"]}, sound: slap});

エクスポートされる型

narraleaf-reactTextEventとともに、3つの型をエクスポートします。

形状
TextEventAppearanceImageSrc | Color | string[]ImageSrcColorを参照
TextEventExpression{image: Image, appearance: TextEventAppearance}
TextEventConfig{expression?: TextEventExpression, sound?: Sound}

このページの目次