LoginSignup
1
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-12-18

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 を基礎から理解したい方は以下の記事がとてもおすすめです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1