小ネタですが、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 |
---|
work2 がセットできる |
実行結果2 |
---|
右端のアニメーションは上限IDに対応する盾で止まる |
以上、小ネタでした。
参考
HSP3.5 hgimg4 を基礎から理解したい方は以下の記事がとてもおすすめです。