stick

キー入力情報取得

stick p1,p2,p3

p1=変数    : 読み込むための変数
p2=0~(0)  : 非トリガータイプキー指定
p3=0~1(0) : ウインドゥアクティブチェック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キー入力チェック

サンプル逆引き (31)

alpha.as
alpha_x.as
apple.as
apple_x.as
blur_f.as
blur_x.as
box_fullscr.as
double.as
dxf_viewer.as
dxfball.as
mesh_x.as
mxatest.as
robot.as
robot_x.as
SAMPLES.AS
sprite.as
SSAVER.AS
STICK.AS
test1.as
TEST1.AS
test1f.as
test1x.as
test2.as
TEST2.AS
TEST3.AS
TEST4.AS
TEST5.AS
TEST6.AS
tex_paint.as
viewer.as
viewer_x.as

情報

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