stick

キー入力情報取得

stick p1,p2,p3

p1=変数    : 読み込むための変数
p2=0~(0)  : 非トリガータイプキー指定
p3=0~1(1) : ウィンドウアクティブチェックON/OFF

解説

よく使われるキーボード及びマウスボタンの状態をまとめてチェックして変数
に代入します。

stick命令が実行されると以下のような複数のボタン情報が1つの数値として、
p1で指定した変数に代入されます。

    1 : カーソルキー左(←)
    2 : カーソルキー上(↑)
    4 : カーソルキー右(→)
    8 : カーソルキー下(↓)
   16 : スペースキー
   32 : Enterキー
   64 : Ctrlキー
  128 : ESCキー
  256 : マウスの左ボタン
  512 : マウスの右ボタン
 1024 : TABキー

何もボタンが押されていない場合には0が代入されます。

もし複数のボタンが同時に押されていた場合には、それらの数値がすべて加算
されます。たとえば、カーソルキーの右とスペースキーが同時に押されている
場合には、4+16の20が変数に読み込まれます。この数値をif命令などでチェッ
クする場合には、演算子「&」が役に立ちます。

例 :
	stick a,0            ; 変数aにキー状態を読み出し
	if a&16 : goto *spc  ; スペースが押されたか?
	if a&32 : goto *ent  ; Enterが押されたか?

このように「変数&キー情報」で複数のボタン情報が入った数値から、 1つだ
けのキー情報を取り出すことができます。

stick命令は、 getkey命令によく似ていますが、最大の違いはボタンが押され
た瞬間だけを検出する点です。つまり、ボタンが押された時に1度だけ押され
ている情報を返し、あとは押されているボタンをはなすまでは、押されている
ことになりません。

ただし、p2の非トリガータイプキー指定により、押しっぱなしであっても情報
を検出することができるようになります。

p2に押しっぱなしでも検出されるキーのコード(上の表にあるコードです。 複
数の場合はそれぞれの数値を加えます)を指定すると、 そのキーだけはボタン
が押されている間ずっと検出されるようになります。

この命令は、非常に複雑に見えますがキーを使ったスクリプトを作る際にとて
も便利な機能となるでしょう。たとえば、シューティングゲームを思い浮かべ
てみてください。自分の機体は上下左右の方向にボタンが押されている間ずっ
と移動しなければなりません。しかし、ミサイルを発射するボタンは1回押し
てはなすまでは次の弾は発射されません。このような場合には、上下左右のキ
ーだけは非トリガータイプのキーに指定して、それ以外は1度だけ押された情
報を返すようにすればいいわけです。

また、p3でウィンドウがアクティブでない場合は入力を無効にする機能をON/OFF
することができます。
p3が1か省略された場合は、HSPウィンドウがアクティブでない場合にはキー入
力が無効になります。
p3が0の場合は、すべての状況下でキー入力を行ないます。

関連項目

getkeyキー入力チェック

サンプル逆引き (38)

blur_f.hsp
blur_x.hsp
box_fullscr.hsp
defcfunc.hsp
demo.hsp
groll.hsp
keymove1.hsp
keymove2.hsp
keymove3.hsp
mapedit.hsp
mapmove1.hsp
mapmove2.hsp
mesh_x.hsp
mxatest.hsp
robot.hsp
robot_x.hsp
shoot.hsp
stick.hsp
test1.hsp
test1.hsp
TEST1.hsp
test10.hsp
test1f.hsp
test1x.hsp
test2.hsp
test2.hsp
TEST2.hsp
test3.hsp
TEST3.hsp
test4.hsp
TEST4.hsp
test5.hsp
TEST5.hsp
test6.hsp
TEST6.hsp
test7.hsp
test8.hsp
test9.hsp

情報

バージョン3.0
作成日2004/10/12
著作者onitama
URLhttp://www.onionsoft.net/
備考ver3.0標準命令
タイプ内蔵命令
グループ基本入出力制御命令
hs ファイルhsphelp\i_stdio.hs