(例えば、「あ」と軽く押したつもりなのに「あああああああ」と入力されてしまう、みたいな感じ)
一種類しかキーを判定しない場合は「キーが押されるまで待つ」にすれば簡単です。しかし、シフトキーと方向キーを判定したい、など二種類以上の場合は「キーが押されるまで待つ」にチェックをいれることができません。
そこで、連続入力を解消する方法は主に二つ。
<その1 ウェイトさせる>
そのまま過ぎてコード載せるまでもない感じですが一応載せておきます。
指定フレーム数以上長押しすると連続で入力されるので、カーソルの移動などにはこちらのほうが適しています。
■ループ開始
|■ウェイト:1 フレーム
|■キー入力:このコモンEvセルフ変数10 / 4方向
|■条件分岐(変数): 【1】CSelf10[キー入力] が 2と同じ 【2】CSelf10[キー入力] が 8と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 2と同じ ]の場合↓
| |▼ 下を押したときの処理をここにいれる(略)
| |■ウェイト:10 フレーム
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 8と同じ ]の場合↓
| |▼ 上を押したときの処理をここにいれる(略)
| |■ウェイト:10 フレーム
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇
<その2 ループさせて一度キーを離したと判断するまで処理を中断する>
キー入力コマンドは何もキーを押していない時は0が挿入されるので、それを利用します。■ループ開始
|■ウェイト:1 フレーム
|■キー入力:このコモンEvセルフ変数10 / 4方向
|■条件分岐(変数): 【1】CSelf10[キー入力] が 2と同じ 【2】CSelf10[キー入力] が 8と同じ
|-◇分岐: 【1】 [ CSelf10[キー入力] が 2と同じ ]の場合↓
| |▼ 下を押したときの処理をここにいれる(略)
| | |■ループ開始
| | |■ウェイト:1 フレーム
| | |■キー入力:このコモンEvセルフ変数10 / 4方向
| | |■条件分岐(変数): 【1】CSelf10[キー入力] が 0と同じ
| | |-◇分岐: 【1】 [ CSelf10[キー入力] が 0と同じ ]の場合↓
| | | |■ループ中断
| | | |■
| | |◇分岐終了◇
| | |■
| |◇ループここまで◇◇
| |■
|-◇分岐: 【2】 [ CSelf10[キー入力] が 8と同じ ]の場合↓
| |▼ 上を押したときの処理をここにいれる(略)
| | |■ループ開始
| | |■ウェイト:1 フレーム
| | |■キー入力:このコモンEvセルフ変数10 / 4方向
| | |■条件分岐(変数): 【1】CSelf10[キー入力] が 0と同じ
| | |-◇分岐: 【1】 [ CSelf10[キー入力] が 0と同じ ]の場合↓
| | | |■ループ中断
| | | |■
| | |◇分岐終了◇
| | |■
| |◇ループここまで◇◇
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇
以下10/18追記
<その3 一度キーを離した時用の変数をONにする>
その2と考え方は同じで、何もキーを押していない時は0が挿入されるので、その場合にのみ「キー入力準備OK」という変数に1を代入します。ループさせる方がスマートかなと思って削除したのですが、状況によってはこちらの方が使いやすい場合があるみたいなので再掲。
0 件のコメント:
コメントを投稿