laybtn_ease()

layerbuttonサブルーチン内用イージング値の取得

val = laybtn_ease(p1,p2,p3,p4)

p1 : 出力される最小値(整数値または実数値)
p2 : 出力される最大値(整数値または実数値)
p3=0〜(0) : 遅延フレーム数
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_settingslayerbuttonオブジェクトの動作を設定する(mod_layerbutton)
laybtn_meslayerbuttonサブルーチン内用テキスト表示(mod_layerbutton)
laybtn_hidelayerbuttonの指定グループを非表示(SHOW_OUT)処理にして削除する(mod_layerbutton)
laybtn_lengthlayerbutton指定グループ内のオブジェクト数を取得(mod_layerbutton)
laybtn_enablelayerbuttonの指定グループのオブジェクトに有効・無効の設定をする(mod_layerbutton)
laybtn_widthlayerbuttonオブジェクトのサイズや位置を変更する(mod_layerbutton)
laybtn_focuslayerbuttonの指定グループ内の指定オブジェクトにフォーカスを移動させる(mod_layerbutton)
laybtn_sticklayerbuttonサブルーチン内用キー入力情報取得(mod_layerbutton)
laybtn_ezcellayerbuttonのcelputを利用した簡単描画(mod_layerbutton)
laybtn_ezboxlayerbuttonの角丸長方形による簡単描画(mod_layerbutton)
laybtn_hitarealayerbuttonオブジェクトのタッチ範囲を変更して設定する(mod_layerbutton)
layerbtn_statlayerbuttonのボタン状態が代入される(mod_layerbutton)
layerbtn_cntlayerbuttonのボタン状態が変更されてからの経過フレーム数(mod_layerbutton)

サンプル逆引き (3)

01 demo.hsptitle "layerbutton demo" log = "" HSP3Dish.js用フォルダ設定 in..
02 demo-stateflow.hsptitle "layerbutton stateflow" log = "" fps2 = 0 HSP3Dis..
05 sample_laybtn_ease.hsp#include "mod_layerbutton.hsp" ボタン作成 pos 10,100 repeat ..

情報

プラグイン / モジュールmod_layerbutton
バージョン1.2
作成日2025/10/26
著作者MIZUSHIKI
URLhttps://suwa.pupu.jp/HSP/index.html
備考layerobj命令を利用して、ちょっとリッチなアニメーション付きボタンを比較的簡単に作成することができます。
拡張命令
グループ拡張入出力関数
対応環境・Windows 版 HSP