HSP3.5 HGIMG4 でヘルプに書かれてないイベント動作紹介

小ネタですが、HSP3.5 のヘルプには登場しないイベント動作がいくつかあります。

event_setwork2 が存在する

event_setwork2 によって work2 値が変更できます。
work と同じく event_work2, event_addwork2 も存在し、work と同様の仕様です。

event_prmadd が存在する

event_prmadd が存在します。
追加引数で最小と最大で範囲を制限することができます。

event_uv が存在する

event_uv が存在します。
現状では PRMSET_SPRCELID にセットするのと同様の効果があるようですが、HGIMG3 にはすでに event_uv があり意図は同じですが、UVの指定方法が異なっています。

まとめてサンプル

サンプルコードは以下のようになります。

#include "hgimg4.as"

#const WID_DOT 2

    sx = ginfo(26)
    sy = ginfo(27)

    gpreset
    setcls CLSMODE_SOLID, 0x000033

    celload dirinfo(5) + "\\tamadot.png", WID_DOT
    celdiv WID_DOT, 64,64, 32,32

    dim evs,3

    newevent ev
    event_setwork2 ev, 1,2,3
    evs.0 = ev

    newevent ev
    event_uv ev, 28
    event_wait ev, 10
    event_uv ev, 29
    event_wait ev, 10
    event_uv ev, 30
    event_wait ev, 10
    event_uv ev, 31
    event_wait ev, 10
    event_jump ev, 0
    evs.1 = ev

    newevent ev
    event_wait ev, 120
    event_prmadd ev, PRMSET_SPRCELID, 1, 44,44+3
    event_jump ev, 0
    evs.2 = ev

    dim ids,3
// 
    gpspr id, WID_DOT, 39, 2
    setscale id, 2,2,2
    setpos id, sx/2 - 128, sy/2
    setevent id, evs.0
    ids.0 = id
// 
    gpspr id, WID_DOT, 24, 2
    setscale id, 2,2,2
    setpos id, sx/2, sy/2
    setevent id, evs.1
    ids.1 = id
// 
    gpspr id, WID_DOT, 44, 2
    setscale id, 2,2,2
    setpos id, sx/2 + 128, sy/2
    setevent id, evs.2
    ids.2 = id

    ddim v,3

    repeat
        getreq fps, SYSREQ_FPS
        redraw 0
        gpdraw

        font "",48
        pos 16,16
        color 224,224,224
        mes strf("%2d [fps]", fps)

        getwork2 ids.0, v.0, v.1, v.2
        fv2str v
        mes "work2: " + refstr

        redraw 1
        await 1000/60
    loop
実行結果1
z08ex1.png
work2 がセットできる
実行結果2
z08ex2.png
右端のアニメーションは上限IDに対応する盾で止まる

以上、小ネタでした。

参考

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

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.