HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0413
wwwのw朗キー入力について9解決


wwwのw朗

リンク

2008/4/13(Sun) 11:21:51|NO.15066

if命令を使って様々なキーを押した時の動作をさせたいんですが、
「Z」キーを押した時の動作を決めたいときは、
if KY&の後 どのように書けばいいでしょうか。
(スペースキーを押した時は if KY&16=16 と書いていました。 



この記事に返信する


GENKI

リンク

2008/4/13(Sun) 12:07:22|NO.15068

f1キーを押してstick命令のマニュアルを出してください。
マニュアルにあるとおり、stick命令では「Z」キーの情報は取得できません。
下のほうに「関連項目」という項目があります。
この項目には今ヘルプで見ている命令に関連する命令が記述されています。
ここに記述されているgetkey命令をクリックしてください。
getkey命令のヘルプが開きます。

使い方はstick命令とは違いますので注意してください。
zキーを押しても90はかえって来ません。1が返ります。

使用例
http://sapporo.cool.ne.jp/daturyoku/HSP/syokyu/input.html



inovia

リンク

2008/4/13(Sun) 12:09:48|NO.15069

stick命令ではzキーなどのキー情報を取得できないのでgetkey命令か、onkeyを使ってください。
下はstickの例

repeat -1 getkey key,90 if key=1:mes "Zが押されたっす" wait 5 loop
下はonkeyの例

onkey goto *keychk *keychk if wparam=90:mes "Zが押されたっす"



wwwのw朗

リンク

2008/4/13(Sun) 15:11:51|NO.15073

ありがとうございます。
やってみます!



SYAM

リンク

2008/4/13(Sun) 17:03:38|NO.15077

必要かわかりませんが、getkey命令には stick命令でいうところのトリガータイプ指定がないので、作りかたの例を示します。
ついでにリリース(解放)タイプなんかも取ってみます。
前回の入力を覚えておいてif命令を使うことでもできますが、分岐せずに計算だけでもできてしまいます。
理屈はわからなくても覚えておくとたまに便利かもしれません。

スクリプトに ^ なんていう計算記号が出てきていますが、これは「論理演算」の勉強をすると出てきます。2進数を扱っていると必要になることがある計算です。
trigkeyはキーが押されたとき一回だけ1になります。
relkeyはキーが放されたとき一回だけ1になります。


repeat -1 oldkey=key getkey key,90 trigkey=key^oldkey&key relkey=key^oldkey&oldkey if trigkey=1:mes "Zが押されたっす" if key=1:mes "Zが押されてるっす" if relkey=1:mes "Zが放されたっす" wait 5 loop



begriff

リンク

2008/4/13(Sun) 19:46:05|NO.15079

脱線な話題のbegriffです。
キー入力ときいて飛んできました(笑)

s="" oncmd *keychk,$102 stop *keychk poke s,0,wparam mes s+"が押された"
こんなことも・・・



GENKI

リンク

2008/4/13(Sun) 20:50:50|NO.15081

解決したということで、ここはZキー取得関連ネタ投稿スレに移行したようですね。
では私もひとつ。
getkey key, 'Z'
こんな方法もありますよということで。



矢野

リンク

2008/4/13(Sun) 22:55:03|NO.15088

嬉しいですね。
キーが放された時を表現するのに、このような方法があったのですね。
実は、質問したいと前々から思っていたのです。

SYAMさん、ありがとうございます。



SYAM

リンク

2008/4/14(Mon) 00:34:42|NO.15091

stick命令には解放を検知する機能がありません。
そこで、stick命令で全キーを"非"トリガータイプに指定して先の例と同じ計算をすると、リリースタイプになります。
しかも都合のよいことに、計算の都合上stick命令で検知するキー全部のリリースを一回の計算でできます。
以下の例ではカーソル左しか見てませんが、ちゃんと他のキーも解放が検知できています。

repeat -1 oldkey=key stick key,2047 trigkey=key^oldkey&key relkey=key^oldkey&oldkey if trigkey&1:mes "←が押されたっす" if key&1:mes "←が押されてるっす" if relkey&1:mes "←が放されたっす" wait 5 loop



矢野

リンク

2008/4/14(Mon) 23:58:45|NO.15110

キー入力について教えていただいてありがとうございます。

ボタンは、押している間は何も動作せず、
ボタンを放したときに、命令が伝わります。

キーを放した動作にこだわったのは、キー操作によって、
ボタン操作と同じ動作をさせたかったからです。

おかげで、大変すっきりしました。



ONION software Copyright 1997-2023(c) All rights reserved.