[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

HSPHelp:stick


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命令などでチェックする場合には、演算子「&」が役に立ちます。

例:

        while (key!=(16|32))
           wait 1
           stick key,0                                                ; 変数 key にキー状態を代入
           if key & 16 { print "スペースキーが押されました!"+key }   ; スペースが押されたか?
           if key & 32 { print "エンターキーが押されました!"+key }   ; Enterが押されたか?
        wend

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

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

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

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

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

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

グループ

基本入出力制御命令

備考

ver2.61標準命令

参照