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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0217
いかえもんカーソルキーで項目を選ぶタイトル画面を作っているのですが、あと一歩のところで上手くいきません2解決


いかえもん

リンク

2020/2/17(Mon) 20:34:24|NO.89499

カーソルキー上下で変数divを足し引きし、それを選択肢の項目数で割った余りで場合分けしています。
しかしいざ実行してみると、カーソルキーの押し方次第で一度に過剰に足し引きされてしまい上手くいきません。
一度押したら綺麗に一度しか足し引きされないようにするにはどうすればよいのでしょうか?



repeat:redraw 2:color 0,0,0 : boxf 0,0,640,480 if(select == 0){ font "MS Pゴシック", 34,16 color 203,80,206 pos 390,300 mes "Game Start" }else{ font "MS Pゴシック", 30,16 color 203,167,206 pos 400,300 mes "Game Start" } if(select== 1 || select == -1){ font "MS Pゴシック", 34,16 color 203,80,206 pos 390,335 mes "Exit" }else{ font "MS Pゴシック", 30,16 color 203,167,206 pos 400,335 mes "Exit" } //↓キーを押した時の処理 getkey down,40 if( down == 1){ wait 10 div ++ } getkey up,38 //↑キーを押した時の処理 if(up == 1){ wait 10 div -- } //divを項目数で割った余りをtitleに代入 select = div \ 2 //Exitを選んでZキーを押すと終了 getkey Z,90 if(select == 1 ||select== -1 && Z == 1 ){ wait 100 end } font "MS Pゴシック", 20,16 color 255,255,255 pos 0,0 mes "select = " + select pos 0,40 mes "div = " + div redraw 1:await 10:loop



この記事に返信する


ZAP

リンク

2020/2/17(Mon) 20:48:14|NO.89500

getkeyだと押しっぱなしの間、ずっと「キーが押された」と検知されますからね。
前のフレームで押されたら、その情報を自分で用意した変数なりに保存しておいて、
次のフレームでは前フレームに引き続き押されっぱなしかどうかを自分で判定する
必要があります。

もしgetkeyを使うことにこだわりがないのであれば、
stick命令なら、トリガー設定で「キーを押された瞬間のみ」を検知できるので、
そちらを使ってみるのもありかも。



いかえもん

リンク

2020/2/17(Mon) 21:05:34|NO.89501

ありがとうございました。
stick命令を使うと上手くいきました。



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