オイナルメモ帖

ウディタその他ツールメモ書き
オイナルメモ帖 TOP  >  ウディタ テクニック >  1つのコモンで複数のデバイスのキー入力 訂正版

1つのコモンで複数のデバイスのキー入力 訂正版

(2020/07/07訂正)
2つあるイベント構文のうち、1つめの構文が間違っていたので追記修正しました。
4行目と8行目> |-◇分岐: 【2】 [ CSelf10 が 1以上 ]の場合↓
ではなく、
         > |-◇分岐: 【2】 [ CSelf11 が 1以上 ]の場合↓
でした。失礼しました。



複数のデバイスのキー入力をするには通常このように組みますが、
これだと1度のボタン押しでボタンを離すまでに何フレームも処理を行ってしまうという欠点があります。
■ループ開始
 |■キー入力:このコモンEvセルフ変数10 / キーボード(100~)
 |■キー入力:このコモンEvセルフ変数11 / パッド(300~)
 |■条件分岐(変数): 【1】CSelf10 が 1以上 【2】CSelf11 が 1以上
 |-◇分岐: 【1】 [ CSelf10 が 1以上 ]の場合↓
 | |■デバッグ文:処理
 | |■
 |-◇分岐: 【2】 [ CSelf11 が 1以上 ]の場合↓
 | |■デバッグ文:処理
 | |
 |◇分岐終了◇
 |■ウェイト:1 フレーム
 |■
◇ループここまで◇◇


対して、このようにキー入力後にもう一度キー入力のループを置き、「キー入力用変数が0 = キーを離した時」にループ脱出とすることで、強引にキー入力待ちを再現しています。
処理を入れる場所を間違えなければ、何度も処理が行われることは無いです。
キーを押した瞬間とキーを離した瞬間の2通りに処理を置くことができ、単にキー入力待ちを置くよりかは使えそうです。

■ループ開始
 |■キー入力:このコモンEvセルフ変数10 / キーボード(100~)
 |■キー入力:このコモンEvセルフ変数11 / パッド(300~)
 |■条件分岐(変数): 【1】CSelf10 が 0以外 【2】CSelf11 が 0以外
 |-◇分岐: 【1】 [ CSelf10 が 0以外 ]の場合↓
 | |■デバッグ文:押した瞬間にイベント
 | |■ループ開始
 | | |■キー入力:このコモンEvセルフ変数10 / キーボード(100~)
 | | |■条件分岐(変数): 【1】CSelf10 が 0と同じ
 | | |-◇分岐: 【1】 [ CSelf10 が 0と同じ ]の場合↓
 | | | |■デバッグ文:ボタンを離すとイベント
 | | | |■ループ中断
 | | | |■
 | | |◇分岐終了◇
 | | |■ウェイト:1 フレーム
 | | |■
 | |◇ループここまで◇◇
 | |■
 |-◇分岐: 【2】 [ CSelf11 が 0以外 ]の場合↓
 | |■デバッグ文:押した瞬間にイベント
 | |■ループ開始
 | | |■キー入力:このコモンEvセルフ変数11 / パッド(300~)
 | | |■条件分岐(変数): 【1】CSelf11 が 0と同じ
 | | |-◇分岐: 【1】 [ CSelf11 が 0と同じ ]の場合↓
 | | | |■デバッグ文:ボタンを離すとイベント
 | | | |■ループ中断
 | | | |■
 | | |◇分岐終了◇
 | | |■ウェイト:1 フレーム
 | | |■
 | |◇ループここまで◇◇
 | |■
 |◇分岐終了◇
 |■ウェイト:1 フレーム
 |■
◇ループここまで◇◇





(2020/07/07追記)
1つ目と2つ目で使っている条件分岐が違いますが、「~以上」よりも「~以外」の方がイベント全体の処理速度がごくわずかに早いと聞いたことがあります。(「=<」が内部的に「=(イコール)」と「<(~より上)」で2回判定を行っているせい?だとか)
「~以上」の方がわかりやすいですが、今回はループ内イベント回数の削減(=処理速度の向上)が目的なので、「~と同じ」と「~以外」の組み合わせで書いてます。

web拍手 by FC2
[ 2013年11月25日 04:31 ] カテゴリ:ウディタ テクニック | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL