@waitjob() について
このゲームフレームワークの重要な機能として、
の2つがありますが、この「@waitjob()」の意味が分からないとよく言われるので解説しておきます。
例1
switch @_processnumber
when 0
@xs = 4
@waitjob(1)
when 1
@xs = 0
@waitjob(1)
when 2
@xs = -4
@waitjob(1)
when 3
@xs = 0
この例で説明していきます。
まず「when 0」で「@xs」に4が代入されます。
この処理でこのキャラクターは右へ4ピクセルづつ毎フレーム移動します。
この「4ピクセルづつ移動」をどれくらいの時間実行するのかを指定するのが「@waitjob(n)」です。
「@waitjob(1)」とすることによって、「@xs = 4」の状態のまま1秒間処理されます。
もし、「@xs = 4」の下に「@ys = 4」も書いておいた場合、1秒間斜め右下へ移動し続けます。
そして、1秒経過すると「@_processnumber」が「@waitjob()」を実行した時の数字からインクリメントされた値になるので、次の「when 1」が実行されます。
「when 1」では、「xs = 0」として「@waitjob(1)」となっているので、1秒間静止したままになります。
すると1秒後に「when 2」が実行されるので、今度は左へ1秒間移動する………という流れになります。
これが、「@waitjob()」の動きになります。
「@nextjob()」は単純に、「@_processnumber」をインクリメントするメソッドになります。
実行すると強制的にswitchの次のwhenが実行されるようになります。
この、behavior内で実行される処理を制御する「@_processnumber」は、
以外で値が変化することはありません。