昔考えたキー押しっぱなし処理の概要を
なんとなく解説してみます。
■注意
・なんらかのバグがあるかもしれません
・解説が下手なのは仕様です
・よくある処理だったらどうしよう
| ・10/9 12:03 誤字修正 ◆キー入力の処理:[キー入力受付] (待つ) ↓ ◆キー入力の処理:[キー入力受付] (待たない) こちらが正しい内容です。 入力を待ったら繰り返ししてる意味ないじゃないか! ---------- ・10/29 バグについて 場合によっては致命的になり得るバグが見つかりました。 解決策は(多分)見つかったのですが この際なので修正版はサイトの方にアップしたいと思います。 |
■前準備
まずは以下のスイッチと変数を用意します。
[スイッチ]
・キー押している
[変数]
・キー入力受付
・↑キー押し時間
簡略化の為解説は↑キーのみです。
その他のキーも押しっぱなしにしたい時は
各々のキーに変数を用意してください。
また、解説文中のスイッチ・変数は【】で囲います。
■解説
1.まずは下準備----------
| ◆ラベルの設定:1番 ◆ウェイト:0.0秒 ◆指定ラベルへ飛ぶ:1番 |
まずはラベルの設定を使って枠組みを作ります。
もちろん繰り返しでもかまいません。
2.普通のキー入力を作ってみる----------
| ◆ラベルの設定:1番 ◆キー入力の処理:[キー入力受付](待つ) ◆条件分岐:[キー入力受付]が4 ◆※動作処理※ ◆ :分岐終了 ◆ウェイト:0.0秒 ◆指定ラベルへ飛ぶ:1番 |
なんの変哲もないキー入力処理です。
キー入力処理の横に(待つ)と書かれているのは
「"キーが押されるまで待つ"にチェックを入れている」ということです。
現状ではキーを押しっぱなしにしても一回しか動きません。
かといって(待つ)チェックを外してしまうと
物凄い勢いで処理が進んでいきます。ルーレットってレベルじゃねーぞ!
3.ようやっと本題です----------
| ◆ラベルの設定:1番 ◆スイッチの操作:[キー押している]をOFFにする ◆条件分岐[↑キー押し時間]が1以上 ◆スイッチの操作:[キー押している]をONにする ◆ :分岐終了 ◆条件分岐[キー押している]がOFF ◆繰り返し処理 ◆キー入力の処理:[キー入力受付] (待たない) ◆条件分岐:[キー入力受付] が0以外 ◆繰り返しの中断 ◆ :分岐終了 ◆ウェイト:0.0秒 :以上繰り返し :それ以外の場合 ◆キー入力の処理:[キー入力受付] (待たない) ◆ :分岐終了 ◆条件分岐:[キー入力受付]が4 ◆条件分岐:変数[↑キー押し時間]が0 ◆※動作処理※ ◆ :分岐終了 ◆変数の操作:[↑キー押し時間]加算(1) ◆条件分岐:変数[↑キー押し時間]が25以上 ◆※動作処理※ ◆ウェイト:0.0秒 ◆ :分岐終了 ◆ :それ以外の場合(入力受付が4以外) ◆変数の操作:[↑キー押し時間]代入(0) ◆ :分岐終了 ◆ウェイト:0.0秒 ◆指定ラベルへ飛ぶ:1番 |
いきなりですがこれが完成版です。
急に重要な部分が増えたので部分ごとに解説しましょー。
| ◆スイッチの操作:[キー押している]をOFFにする ◆条件分岐[↑キー押し時間]が1以上 ◆スイッチの操作:[キー押している]をONにする ◆ :分岐終了 ◆条件分岐[キー押している]がOFF ◆繰り返し処理 ◆キー入力の処理:[キー入力受付] (待たない) ◆条件分岐:[キー入力受付] が0以外 ◆繰り返しの中断 ◆ :分岐終了 ◆ウェイト:0.0秒 :以上繰り返し :それ以外の場合 ◆キー入力の処理:[キー入力受付] (待たない) ◆ :分岐終了 |
まずはこの部分です。
ここではキー入力を待つか待たないかを判別しています。
一行目で押しているかどうかを初期化します。
この文字の部分でなんらかのキーを押しっぱなしにしているかを判別します。
なぜ「【↑キー押し時間】が1以上」なのかというと
下半分でキーが押されているときに「【↑キー押し時間】が1以上になっているからです。
分かりにくいですね☆
この文字の部分でキー入力の処理を分岐します。
【キー押している】がOFFのときは待って、【キー押している】がONの時は待ちません。
薄オレンジともはやピンクっぽい色で書いてあるとこは
とあるバグの防止用です。説明は省略しますっ(それでいいのか
| ◆条件分岐:[キー入力受付]が4 ◆条件分岐:変数[↑キー押し時間]が0 ◆※動作処理※ ◆ :分岐終了 ◆変数の操作:[↑キー押し時間]加算(1) ◆条件分岐:変数[↑キー押し時間]が25以上 ◆※動作処理※ ◆ウェイト:0.0秒 ◆ :分岐終了 ◆ :それ以外の場合(入力受付が4以外) ◆変数の操作:[↑キー押し時間]代入(0) ◆ :分岐終了 |
このエキゾチックな色の部分では、押したときの処理をしてます。
最初の分岐は説明不要でしょう。【キー入力受付】が4のときを判別しています。
最初の薄紫の部分でキーを押した瞬間の処理を行ってます。
次の紫とその下の薄紫で押しっぱ処理をしています。
紫で【↑キー押し時間】を1ずつ加算して
【↑キー押し時間】が25以上になった時に薄紫(2個目)の内容が実行されます。
条件分岐の"25"はおしっぱ処理が始まるまでの時間です。色々変えてみましょう。
「ウェイト」を大きくすれば移動間の時間がのびます。こちらも色々と変えてみましょう。
そして最後の三行なんですが
コレは一行目の「【キー入力】が4」とペアになってます。
要するに↑キーを押していないときに【↑キー押し時間】をリセット(0を代入)してるだけです。
4.そして伝説へ----------
てきとーなサンプルを置こうかと思ったんですが
気力がありませんでした。
なんかすごい長くなってしまいました。過去最長ですかね?
説明下手が災いしてよく分からなくなってるので
解説かっ飛ばして3の最初を参考にさえすればいいと思います!
PR
トラックバック
トラックバックURL: