laybtn_hitarea

layerbuttonオブジェクトのタッチ範囲を変更して設定する

laybtn_hitarea n, x1,y1, x2,y2, ..., x8,y8

n : 座標データの数
x1,y1〜 : 座標データ (最大8個まで)

(プラグイン / モジュール : mod_layerbutton)

解説

layerbuttonオブジェクトのヒットテスト範囲を任意の形状に変更できます。
laybtn_hitarea 命令は layerbutton サブルーチン{}内の先頭に書いてください。

座標データは、x1,y1, x2,y2, ..., xN,yN の形式で指定します。
指定できる座標点は最大8個までで、八角形までの形状に対応しています。

各座標は、layerbuttonオブジェクトの左上の位置(pos)を基点とした相対座標です。

引数 n に、座標データの数を指定します。

例えば、三角形のヒットエリアを定義するには、以下のように記述します。
laybtn_hitarea 3, 0,0, 100,0, 100,50

また、引数 n に負数を指定すると以下のようなヒットテスト範囲を設定できます。

引数 詳細 タイプ
-1, x,y, D x,y : 中心座標
D : 直径
円形
-2, x,y, W,H, ang x,y : 中心座標
W : 幅
H : 高さ
ang : 角度値(ラジアン) [double値]
楕円形(角度付き)
-3, x,y, W,H, ang x,y : 中心座標
W : 幅
H : 高さ
ang : 角度値(ラジアン) [double値]
長方形(角度付き)
-4, x1,y1,D1, x2,y2,D2 x1,y1 : 中心座標 (1つ目の円)
D1 : 直径 (1つ目の円)
x2,y2 : 中心座標 (2つ目の円)
D2 : 直径 (2つ目の円)
カプセル型 (2つの円とそれらを結ぶ接線に囲まれた範囲)
※ 正確な範囲ではなく、近似的な計算によるものです。

x3,y3,D3,...と引数を続けて指定することで、鎖状に最大4つの円までを繋げた範囲として設定できます。

サンプル

#include "mod_layerbutton.hsp"

pos 150,100
layerbutton 120,60 {
	// ヒットテスト範囲を設定 : n, x1,y1, x2,y2, ... (座標点は最大8個の八角形まで)
	laybtn_hitarea 3, -50,0, 120,0, 120,60  ; 三角形
	if lparam == objlayer_cmddraw {
		color 230,230,255 : boxf objlayer_axis_x, objlayer_axis_y, objlayer_axis_x2, objlayer_axis_y2  ; オブジェクトの矩形範囲
		color 100,100,100
		if layerbtn_stat == LAYBTN_FOCUS_IN : color 255
		arr = -50,0, 120,0, 120,60
		pos  objlayer_axis_x+arr(0), objlayer_axis_y+arr(1)  ; ヒット範囲描画
		line objlayer_axis_x+arr(2), objlayer_axis_y+arr(3)
		line objlayer_axis_x+arr(4), objlayer_axis_y+arr(5)
		line objlayer_axis_x+arr(0), objlayer_axis_y+arr(1)
		font msgothic,12
		laybtn_mes "\nヒット範囲 ",0, 2,0
	}
	return
}
repeat
	redraw 0 : color 255,255,255 : boxf : color : pos 0,0
	redraw 1
	await 1000/60
loop

関連項目

layerbuttonちょっとリッチなアニメーション付きボタンを作成(mod_layerbutton)
laybtn_settingslayerbuttonオブジェクトの動作を設定する(mod_layerbutton)
laybtn_meslayerbuttonサブルーチン内用テキスト表示(mod_layerbutton)
laybtn_easelayerbuttonサブルーチン内用イージング値の取得(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)
layerbtn_statlayerbuttonのボタン状態が代入される(mod_layerbutton)
layerbtn_cntlayerbuttonのボタン状態が変更されてからの経過フレーム数(mod_layerbutton)

サンプル逆引き (4)

07 sample_vpad-jujikey.hsp#include "hsp3dish.as" #include "mod_layerbutton.hsp" #..
08 sample_vpad-jujikey-noimg.hsp#include "hsp3dish.as" #include "mod_layerbutton.hsp" #..
09 sample_vpad-analog.hsp#include "hsp3dish.as" #include "mod_layerbutton.hsp" #..
10 sample_shooting.hsptitle "バーチャルパッド用サンプル シューティング" randomize HSP3Dish.js用データ..

情報

プラグイン / モジュールmod_layerbutton
バージョン1.1
作成日2025/9/24
著作者MIZUSHIKI
URLhttps://suwa.pupu.jp/HSP/index.html
備考layerobj命令を利用して、ちょっとリッチなアニメーション付きボタンを比較的簡単に作成することができます。
*/ /////////////////////////////////////////////////////////////////////////////
#if 0
// hs ファイル //////////////////////////////////////////////////////////////
タイプ拡張命令
グループオブジェクト制御命令
対応環境・Windows 版 HSP