setInterval を使用して、異なる時間間隔で画像を表示できます。次の点を考慮してください。
制御システムは、同じ時間間隔を使用して画像 1、2、…n-2 を表示し、別の時間間隔 (「setInterval」、2015) を使用して画像 n-1、n を表示します。図 1 は、ペトリ ネットによる制御システムのプロセス モデルです。この返信の PDF 版は、インタラクティブなペトリ ネットです。
図1
P_1 (m_1) のマークは、変数 animate_frame に相当します。m_1=0 の場合、画像は表示されません。m_1=1 の場合、最初の画像が表示されます。m_1=2 の場合、2 番目の画像が表示されます。等々。合計 10 個の画像が表示される場合、初期値は〖 m〗_0=8、〖 m〗_1=0、〖 m〗_2=2.m_0 が最初の時間間隔の使用を制御するために使用されます。 . m_2 は、2 番目の時間間隔の使用を制御するために使用されます。m_1 は画像を表示するために使用されます。
2 つの実行または実行ロジックがあります。
最初の実行または実行ロジック (rn1) は、最初の時間間隔 (1 秒など) を使用します。画像 1 ~ n-1 を表示します。画像 n-1 を表示した後、間隔オブジェクトを削除し、2 番目の実行ロジック用に新しい間隔オブジェクトをスケジュールします。
2 番目の実行または実行ロジック (rn2) は、2 番目の時間間隔 (4 秒など) を使用します。最後の画像を表示し、最後の画像をディスプレイから削除します。
画像を表示するには 3 つの方法があります。最初の方法 (T_0) は、次の画像の表示を、m_1 を 1 ずつ増やし、m_(0) を 1 ずつ減らすことと組み合わせます。 . 3 番目の方法 (T_2) は空白を表示し、最後の画像を削除します。任意の時点で、計算ロジック T_0、T_1、および T_2 のいずれかまたは 1 つだけが発生する可能性があります。どの計算ロジックも実行できない場合、実行ロジックは終了します。つまり、間隔オブジェクトがクリアされます (例: clearInterval())。
図 1 のペトリネットをガイドとして使用すると、制御システムのコンピューター プログラムは次のように編成できます。
rn1
if (m_0≥1) {
// T_0
m_0=m_0-1
m_1=m_1+1
// update image using plugin API
} else if ((m_0==0) && (m_2≥1)) {
// T_1
m_2=m_2-1
m_1=m_1+1
// update image using plugin API
clearInterval(ai);
ai=setInterval(rn2,4000);
} else
clearInterval(ai);
rn2
if (m_2≥1) {
// T_1
m_2=m_2-1
m_1=m_1+1
// update image using plugin API
} else if (m_2==10) {
// T_2
m_1=m_1-1
// hide image using plugin API
} else
clearInterval(ai);
制御システムを開始するには:
ai=startInterval(rn1,1000);
その後、rn1 は最終的に st2 を呼び出し、rn2 は最終的にプロセスを終了します。追加の計算 (display_element.html("") など) が必要な場合は、それらを rn1 と rn2 に追加します。
参考文献
「setInterval、最後の要素と最後の要素の 1 つ前の異なる間隔 (jsPsych)」(2015)。スタックオーバーフロー。2015 年 11 月 5 日にsetInterval から取得、最後の要素と最後の要素の 1 つ前の間隔が異なります (jsPsych)。