layerbuttonサブルーチン内用イージング値の取得
val = laybtn_ease(p1,p2,p3,p4)
(プラグイン / モジュール : mod_layerbutton)
p1 と p2 で指定された最小値・最大値の範囲内で、任意の計算式に基づき補間されたイージング関数の結果値を取得します。 この結果値は、layerbutton 命令の p5 〜 p10 に設定された各ボタン状態の表示にかけるフレーム数(時間範囲)に対し、layerbtn_cnt の値を経過時間として算出されます。 p3 の遅延フレーム数は、同一グループ内で複数のボタンを作成する場合に、2つ目以降の SHOW_IN 表示等を意図的に遅らせ、段階的に表示させる用途に使用します。 イージングの計算式タイプは、LAYBTN_SHOW_IN などのボタン状態ごとにデフォルトのタイプが決まっています。 これを、引数 p4 で計算式タイプを強制することができます。 イージングの計算式タイプについて詳しくは、setease命令のコマンドヘルプを参照してください。
| ボタン状態 | イージングタイプ |
| LAYBTN_SHOW_IN LAYBTN_FOCUS_IN LAYBTN_PRESS_IN |
ease_quartic_out |
| LAYBTN_SHOW_OUT LAYBTN_FOCUS_OUT(※) LAYBTN_PRESS_OUT |
ease_quad_out |
※ laybtn_settings命令で設定を「FOCUS_IN の表示が完了する前にフォーカスが外れたとき FOCUS_OUT を即座に開始させる」にしている場合、LAYBTN_FOCUS_OUT のデフォルトタイプは ease_quartic_in になります。
#include "mod_layerbutton.hsp"
// ボタン作成
pos 10,100
repeat 4
tien = 10*cnt
pos ,ginfo_cy+10
layerbutton 180,60, tien, 0, 30+tien,20,0, 15+tien/2,10,0 {
if lparam == objlayer_cmddraw {
color 0,0,0 : font msgothic, 18, 1
ti = objlayer_option
// ボタン状態で分岐 (+イージングで表示位置,色を変える)
switch layerbtn_stat
case LAYBTN_SHOW_IN
color 0,0,255 : boxf objlayer_axis_x-laybtn_ease(200, 0, ti), objlayer_axis_y, objlayer_axis_x2-laybtn_ease(200, 0, ti), objlayer_axis_y2
color 250,250,250 : laybtn_mes "遅延="+ti,0, 1,1, -laybtn_ease(200, 0, ti)
swbreak
case LAYBTN_FOCUS_IN
color laybtn_ease(0,128),0,255 : boxf objlayer_axis_x, objlayer_axis_y, objlayer_axis_x2, objlayer_axis_y2
color 250,250,250 : laybtn_mes "遅延="+ti,0, 1,1
swbreak
case LAYBTN_FOCUS_OUT
color laybtn_ease(128,0),0,255 : boxf objlayer_axis_x, objlayer_axis_y, objlayer_axis_x2, objlayer_axis_y2
color 250,250,250 : laybtn_mes "遅延="+ti,0, 1,1
swbreak
case LAYBTN_PRESS_IN
color 128,128,255 : boxf objlayer_axis_x, objlayer_axis_y, objlayer_axis_x2, objlayer_axis_y2
color 250,250,250 : laybtn_mes "遅延="+ti,0, 1,1
swbreak
case LAYBTN_SHOW_OUT
case LAYBTN_SHOW_OUT_SELECTED
if layerbtn_stat & LAYBTN_SELECTED { color 128,128,255 } else { color 0,0,255 }
boxf objlayer_axis_x-laybtn_ease(0, 200, ti/2), objlayer_axis_y, objlayer_axis_x2-laybtn_ease(0, 200, ti/2), objlayer_axis_y2
color 250,250,250 : laybtn_mes "遅延="+ti,0, 1,1, -laybtn_ease(0, 200, ti/2)
swbreak
swend
}
return
}
loop
// 表示ループ
repeat
redraw 0 : color 255,255,255 : boxf : color : pos 0,0 : font msgothic,17
redraw 1
await 1000/60
loop
| layerbutton | ちょっとリッチなアニメーション付きボタンを作成 | (mod_layerbutton) |
| laybtn_settings | layerbuttonオブジェクトの動作を設定する | (mod_layerbutton) |
| laybtn_mes | layerbuttonサブルーチン内用テキスト表示 | (mod_layerbutton) |
| laybtn_hide | layerbuttonの指定グループを非表示(SHOW_OUT)処理にして削除する | (mod_layerbutton) |
| laybtn_length | layerbutton指定グループ内のオブジェクト数を取得 | (mod_layerbutton) |
| laybtn_enable | layerbuttonの指定グループのオブジェクトに有効・無効の設定をする | (mod_layerbutton) |
| laybtn_width | layerbuttonオブジェクトのサイズや位置を変更する | (mod_layerbutton) |
| laybtn_focus | layerbuttonの指定グループ内の指定オブジェクトにフォーカスを移動させる | (mod_layerbutton) |
| laybtn_stick | layerbuttonサブルーチン内用キー入力情報取得 | (mod_layerbutton) |
| laybtn_ezcel | layerbuttonのcelputを利用した簡単描画 | (mod_layerbutton) |
| laybtn_ezbox | layerbuttonの角丸長方形による簡単描画 | (mod_layerbutton) |
| laybtn_hitarea | layerbuttonオブジェクトのタッチ範囲を変更して設定する | (mod_layerbutton) |
| layerbtn_stat | layerbuttonのボタン状態が代入される | (mod_layerbutton) |
| layerbtn_cnt | layerbuttonのボタン状態が変更されてからの経過フレーム数 | (mod_layerbutton) |
| 01 demo.hsp | title "layerbutton demo" log = "" HSP3Dish.js用フォルダ設定 in.. |
| 02 demo-stateflow.hsp | title "layerbutton stateflow" log = "" fps2 = 0 HSP3Dis.. |
| 05 sample_laybtn_ease.hsp | #include "mod_layerbutton.hsp" ボタン作成 pos 10,100 repeat .. |
| プラグイン / モジュール | mod_layerbutton |
| バージョン | 1.1 |
| 作成日 | 2025/9/24 |
| 著作者 | MIZUSHIKI |
| URL | https://suwa.pupu.jp/HSP/index.html |
| 備考 | layerobj命令を利用して、ちょっとリッチなアニメーション付きボタンを比較的簡単に作成することができます。 */ ///////////////////////////////////////////////////////////////////////////// #if 0 // hs ファイル ////////////////////////////////////////////////////////////// |
| タイプ | 拡張命令 |
| グループ | 拡張入出力関数 |
| 対応環境 | ・Windows 版 HSP |