この関数は,実験中のイベントのシーケンスを制御する際に使われます。

1. Sequence

flow.Sequence([options])

この関数は,コンポーネント(画面)を順番に実行(呈示)します。「画面」,「シーケンスやループ」など,任意のタイプのコンポーネントを同じように扱うことができます。典型的な実験では,実験全体(教示 → 実験タスク → デブリーフィング)が1つのシーケンスです。各試行で見てみると,ブランク画面 → 注視画面 → 刺激画面がシーケンスです。

flow.Sequence.options.content

この関数で最も重要なオプションは「content」です。シーケンスを構成する「サブコンポーネント」のリストが該当します。例を以下に示します。

const proclaimers = new lab.flow.Sequence({
  content: [
    new lab.html.Screen({ content: 'And',   timeout: 500 }),
    new lab.html.Screen({ content: 'I',     timeout: 500 }),
    new lab.html.Screen({ content: 'will',  timeout: 500 }),
    new lab.html.Screen({ content: 'walk',  timeout: 500 }),
    new lab.html.Screen({ content: 'five',  timeout: 500 }),
    new lab.html.Screen({ content: 'hun-',  timeout: 500 }),
    new lab.html.Screen({ content: '-dred', timeout: 500 }),
    new lab.html.Screen({ content: 'miles', timeout: 500 }),
  ],
})

proclaimers.run()

シーケンスではcontentの上から順に実行されます。

flow.Sequence.options.shuffle

コンポーネントをランダムな順序で実行します(デフォルトはfalse)。このオプションが「true」に設定された場合,コンテンツはprepareフェーズ中にシャッフルされます。

flow.Sequence.options.handMeDowns

handMeDowns として特定されたオプションは,準備フェーズ中にネストされたコンポーネント(つまり下位のコンポーネント)に送られます。通常,ネストされたコンポーネントは同じデータストレージと出力要素を共有するため,デフォルトで渡されます。

例えば,デバッグモードを最上位のコンポーネントに設定すると,他のすべての下位コンポーネントに自動的に反映されます。

2. Loop

flow.Loop([options])

この関数は,同じ(単一の)コンポーネントを繰り返し,繰り返すごとにパラメーターを変化させます。

const template = new lab.html.Screen({
  content: '${ parameters.lyrics      }', // parameters substituted ...
  timeout: '${ parameters.beats * 600 }', // ... during preparation
})

const spandauBallet = new lab.flow.Loop({
  template: template,
  templateParameters: [
    /* ... */
    { lyrics: 'So true, funny how it seems', beats: 7 },
    { lyrics: 'Always in time, but never in line for dreams', beats: 10 },
    { lyrics: 'Head over heels when toe to toe', beats: 8 },
    { lyrics: 'This is the sound of my soul', beats: 8 },
    /* ... */
  ]
})