トピック
??? 258556

ボタン系の質問です。

B=BUTTON(2) IF B=64 TEHN GOTO @ラベル名 上に書いた命令をループ内に入れたのですが、とんだラベル名のところで、ループを作り、また、始めのループにもどるようにラベル名を変えて、同じような命令を書くと一瞬で始めのループにもどるのですが、なぜですか?
0そうだね
プレイ済み
返信[1]
親投稿
もし、とんだ先でもBUTTON関数を使っているのでしたら、次の垂直同期が来るまで、BUTTON関数の戻り値が、変わらないなるためと思います。 プログラムを見ていないので、間違っていたらすみません。
3そうだね
プレイ済み
返信[2]
親投稿
くつねこ mamimusu
2こめの IF B==64 THEN GOTO @ラベル名 のうえの行に B=BUTTON(2) はありますか?
0そうだね
プレイ済み
返信[3]
親投稿
SquidSky ugomemo_gorohati
WHILE 1 '1こめのループ  B=BUTTON(2)  IF B==#A THEN ?"Aがおされました" GOSUB @LOOP2 VSYNC 1 WEND @LOOP2 '2つめのループ  WHILE 1   B2=BUTTON(2)   IF B2==#B THEN ?"Bをおしました" BREAK VSYNC 1 WEND RETURN 'ループからBREAKしたときにじっこうする
0そうだね
プレイ済み
返信[4]
親投稿
SquidSky ugomemo_gorohati
ここで、GOSUBがありますが、分かりますか? GOSUB @ラベル名 で@ラベル名に強制分岐しますが、RETURNによってまたGOSUB命令のある場所に戻ることができます。 また、このプログラムは、Aボタンを押すと、次にBボタンが押されるのを待つループに入ります。その部分がGOSUB @LOOP2になります。 そして、Bボタンが押されると、BREAK命令でループを抜け、WENDの次にあるRETURNでまたAボタンが押されるのを待つループに戻る、というプログラムです。
1そうだね
プレイ済み
返信[5]
親投稿
スムージーはるさめさんのプログラムではAとBなので問題ない動作になると思いますが、もし両方ともAボタンで処理するようにしたら上手く動かない可能性がありますね。(原因はコータさんの発言の理由です) その場合は、@LOOP2の次の行(WHILEの前)にWAIT 1を入れると想定通りの動作になると思います。
1そうだね
プレイ済み
返信[6]
親投稿
ΖΕΧ ZEX256
IF B=64 TEHN これは間違い
0そうだね
プレイ済み
返信[7]
親投稿
??? 258556
ありがとうございました! ZEXさん、間違いのご指摘ありがとうございます!
0そうだね
プレイ済み