HSP

HSP3.5 HGIMG4 でイベント待ちを制御する

event_wait の引数に -1 を指定する

HSP3.5 HGIMG4 の event_wait の引数として、待ちフレーム数を指定する代わりに -1 を指定すると、work の x成分を参照して待ちフレーム数を決定するようになります。これによって1種類のイベントを作成しておきオブジェクトごとに work の x成分を変えることで動作を変えることができます。
また event_wait に -1 を指定し、その参照先である work の x成分に -1 を指定すると無限に待つ動作となります(多分)。

work の x成分にフレーム数を指定して同じイベントで異なる時間待つサンプルコードは以下のようになります。

#include "hgimg4.as"

    gpreset
    setcls CLSMODE_SOLID, 0x000033

// イベント1種類
    newevent ev
    event_addpos ev, 0.1, 0,0
    event_wait ev, -1

    repeat 5
        gpbox id, 10, 0x00cc33
        setpos id, -20, double(2 - cnt) * 12.0, 0
        setwork id, (cnt + 1) * 120, 0, 0
        setevent id, ev
    loop

    repeat
        getreq fps, SYSREQ_FPS

        redraw 0
        gpdraw
        pos 16,16
        color 224,224,224
        font "",48
        mes strf("%2d [fps]", fps)
        redraw 1
        await 1000/60
    loop
実行結果1-1
z10wait1.png
5つのボックスが右へ移動
実行結果1-2
z10wait2.png
右へ移動しつづけるフレーム数が異なる

次のサンプルは無限フレーム待ちにして左クリックするごとに次の動きに続く動作です。

#include "hgimg4.as"

    gpreset
    setcls CLSMODE_SOLID, 0x000000

    newevent ev
    event_addpos ev, 0.1, 0, 0
    event_wait ev, -1

    event_setwork ev, -1, 0, 0
    event_addpos ev, 0, -0.1, 0
    event_wait ev, -1

    event_setwork ev, -1, 0, 0
    event_addpos ev, -0.1, 0, 0
    event_wait ev, -1

    event_setwork ev, -1, 0, 0
    event_addpos ev, 0, 0.1, 0
    event_wait ev, -1

    event_setwork ev, -1, 0, 0
    event_jump ev, 0


    gpbox id, 10, 0x00ccff
    setpos id, -14, 14, 0
    setwork id, -1, 0, 0
    setevent id, ev

    repeat
        getreq fps, SYSREQ_FPS

        stick key
        if key & 256 {
            setwork id, 0, 0, 0
        }

        redraw 0
        gpdraw
        pos 16,16
        color 224,224,224
        font "",48
        mes strf("%2d [fps]", fps)
        redraw 1
        await 1000/60
    loop
実行結果2
z10wait3.png
左クリックするごとに移動方向が変わる

このサンプルでは左クリックするごとに work の x成分 を 0 にして event_wait の待機を解除しましたが、他にもなにかの条件判定を満たしたとき(自キャラがある地点に到達した、など)にイベント動作を次へ移行するような使い方ができます。

参考

HSP3.5 hgimg4 を基礎から理解したい方は以下の記事がとてもおすすめです。