HSP3命令入門講座 <onclick命令>

Last Update : 2007/08/xx

onclick命令 (マウスクリックの割り込み指定)

 マウスのボタンのクリック割り込み動作を設定する命令です。ボタンオブジェクトを設置するbutton命令のマウスバージョンといったところでしょうか。wait命令、await命令、stop命令時に割り込み処理が行われます。キーボードの場合はonkey命令が用意されてます。

 命令の書式は、マウスのボタンをクリックした時のラベルジャンプ先を指定する形になります。「クリック」を正確に表現すると、ボタンを押して離した瞬間です。

 onclick *label

 ジャンプしたラベル先では、HSPのシステム変数のiparam、lparam、wparamに以下の数値が返ってきます。

変数 説明
iparam 押し下げられているボタン番号が返ってきます。
マウスの左ボタン
マウスの右ボタン
マウスの中ボタン(ホイールボタン)
lparam マウスポインタのクライアント座標位置が返ります。下位ワードにX座標、上位ワードにY座標。内容的には、システム変数のmousex、mouseyと同じ値です。
wparam 押し下げられているボタン番号が返ってきます。以下の数値の組み合わせです。
マウスの左ボタン
マウスの右ボタン
+Shiftキー
+Ctrlキー
16 マウスの中ボタン(ホイールボタン)

 なお、onclick命令の第1パラメータ相当の部分に0を指定することで、割り込み処理を一時的に停止することもできます。逆に1を指定すると再開です。

 onclick 0

☆ 関連
 HSP3 あれこれ (マウス) ... マウス関連の命令、発展的なサンプルコード。

↑TOP↑

onclick命令 サンプルスクリプト

 押しているマウスボタンをチェックするサンプルスクリプト。wparam値をチェックします。数値の組み合わせで返ってくるので、たとえば「3」なら、マウスの左右ボタン同時押しということになるわけです。

	onclick *jump
	stop

*jump
	sdim key

	if wparam & 4 : key += "Shiftキー + "
	if wparam & 8 : key += "Ctrlキー + "

	if wparam & 1 : key += "左クリック "
	if wparam & 2 : key += "右クリック "
	if wparam & 16 : key += "中クリック "

	mes "["+wparam+"] "+key

 マウスをクリックした際のポインタ位置座標を取得するサンプルスクリプト。lparam値に返りますが、実際のところHSPのシステム変数のmousexとmouseyを見ればOKなので、あまり利用価値なし。

;	上位ワード/下位ワード切り出しマクロ
#define ctype LOWORD(%1) (%1 & $FFFF)
#define ctype HIWORD(%1) (%1 >> 16 & $FFFF)

	onclick *jump
	stop

*jump
;	lparamの下位ワードにx座標、上位ワードにy座標
	mes ""+LOWORD(lparam)+"x"+HIWORD(lparam)

↑TOP↑

onclick命令 サブルーチンジャンプ [HSP3]

 HSP3では、onclick命令のラベル名指定の前部分に「gosub」を付けることで、サブルーチンジャンプ処理が加わりました。ラベルジャンプ先では、必ず「return」させなければなりません。

 なお、onclick命令のラベル名指定の前部分に「goto」を指定した場合は、普通のジャンプ処理です(省略可)。

 処理の違いが分かるサンプルコードです。どんどん数値をアップする処理をループ中に行っているので、リセットするためマウスクリックした場合、数値の動きは・・・。

;	サブルーチンジャンプ

	onclick gosub *jump

	repeat
		wait 10
		title ""+count
		count++
	loop

*jump
	count = 0

;	⇒ループ中に戻る
	return
;	通常ジャンプ

	onclick *jump

	repeat
		wait 10
		title ""+count
		count++
	loop

*jump
	count = 0

;	⇒まんまストップ
	stop

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.