はい、カーソルの表示についてです。
コモンイベント044の156行目から163行目と、210行目から342行目までの範囲がそれです。
なんだか多いなぁ、と思うかもしれませんが心配無用。
カーソルをどう動かすか、だけならばそれほど多くないのです。
今回のようにメニュー項目の位置を変えただけなら尚更。
まず最初にコモンイベント044の156行目から163行目ですが、これはカーソルの初期表示位置を示しています。
特に難しい処理は無いでしょう。ウィンドウや文字列の移動と同じです。
肝心なのは210行目以降の処理です。
ここも一つ一つを分解していけば、そう難しい処理ではありません。
100行以上もあるためコモンイベントの引用は行いませんので、各自のウディタと照らし合わせてご覧ください。
まず205行目から217行目。
ここはカーソルの初期位置である156〜163行目とほぼ同じですが、このコモンEvセルフ2がV9-39[メニュカーソル位置]によって数値を変える仕組みになっています。
変数こそ使われていませんでしたが、これと同じような例を先ほど見ましたね?
メニューの項目で見た、「Y座標を変えずにX座標だけを変える」方法の応用です。
ループ内で使用するとこういう形になります。ここも今回の目的と同じように、X座標を変えずY座標を変える処理に改造しましょう。
■このコモンEvセルフ2 = 50 + 0
■このコモンEvセルフ2 = 0 * V9-39[メニュカーソル位置] の二つを消し、
■このコモンEvセルフ4 = 18 + 0
■このコモンEvセルフ4 = 0 * V9-39[メニュカーソル位置] を追加
更に、
■このコモンEvセルフ4 = 11 + 0 を ■このコモンEvセルフ4 += 11 + 0 に変更すれば完成です。
これで、カーソルが縦に動くようになったはずです。
…………ただし、右を押したら下へ。左を押したら上へ移動するようになってるはずですが。
これをキチンと上を押したら上へ、下を押したら下へ、左右を押してもカーソルが移動しないようにするにはコモンイベント044の219行目以降。
■キー入力:このコモンセルフ変数4/[入力待ち] 4方向 決定(10) キャンセル(11)
これを使用します。
このコマンドは対応するキーを押すことで指定した変数へ、↓:2、←:4、→:6、↑:8、決定:10、キャンセル:11の値を格納することが出来ます。
つまり、ここで指定したこのコモンセルフ変数4の値で条件分岐してやるとキチンと動くようになるのです。
基本システムで解説すると、
この六つの項目があるとします。
カーソルの初期位置は1なので、最初にV9-39[メニュカーソル位置]に0を代入します。
→を押した時、V9-39[メニュカーソル位置]に1を加算。
←を押した時、V9-39[メニュカーソル位置]にV9-41[[メニュー]コマンド数]に-1を加算します。
そして、V9-39[メニュカーソル位置]をV9-41[[メニュー]コマンド数]で割った余り。つまり V9-39[メニュカーソル位置] % V9-41[[メニュー]コマンド数] を取得するときっちりカーソルの位置を出してくれるというわけです。
例えば→を45回押した場合、45 % 6 = 3 なのでカーソルは3の位置にある、と計算できます。
計算結果をまたV9-39[メニュカーソル位置]に代入してやるとループによって上の方へと戻り、カーソルの位置を描画しなおして戻ってくるのです。
今回の改造では条件分岐で「4の場合」→「8の場合」、「6の場合」→「2の場合」と変換してやるだけで正しく動くようになるのですが。
メニューの項目が6個じゃ足りない! って人は044の254行目以降を弄ってみてください。
メニューを二列にしたいんだけど! って人は044の240行目辺りに上下の分岐を入れ、カーソル位置を上手く変数で表してみてください。
上下に動くと変数の値を2動かし、左右に動くと1動かすように設計すれば、
こんな番号の割り振りで綺麗にカーソル位置が表せるはずです。
と、これでメニューの基本画面は表すことが出来ました。
このページはこれで完成。次のページではアイテム欄の改造について喋くります。
前へ
コモンイベント044の156行目から163行目と、210行目から342行目までの範囲がそれです。
なんだか多いなぁ、と思うかもしれませんが心配無用。
カーソルをどう動かすか、だけならばそれほど多くないのです。
今回のようにメニュー項目の位置を変えただけなら尚更。
まず最初にコモンイベント044の156行目から163行目ですが、これはカーソルの初期表示位置を示しています。
特に難しい処理は無いでしょう。ウィンドウや文字列の移動と同じです。
肝心なのは210行目以降の処理です。
ここも一つ一つを分解していけば、そう難しい処理ではありません。
100行以上もあるためコモンイベントの引用は行いませんので、各自のウディタと照らし合わせてご覧ください。
まず205行目から217行目。
ここはカーソルの初期位置である156〜163行目とほぼ同じですが、このコモンEvセルフ2がV9-39[メニュカーソル位置]によって数値を変える仕組みになっています。
変数こそ使われていませんでしたが、これと同じような例を先ほど見ましたね?
メニューの項目で見た、「Y座標を変えずにX座標だけを変える」方法の応用です。
ループ内で使用するとこういう形になります。ここも今回の目的と同じように、X座標を変えずY座標を変える処理に改造しましょう。
■このコモンEvセルフ2 = 50 + 0
■このコモンEvセルフ2 = 0 * V9-39[メニュカーソル位置] の二つを消し、
■このコモンEvセルフ4 = 18 + 0
■このコモンEvセルフ4 = 0 * V9-39[メニュカーソル位置] を追加
更に、
■このコモンEvセルフ4 = 11 + 0 を ■このコモンEvセルフ4 += 11 + 0 に変更すれば完成です。
これで、カーソルが縦に動くようになったはずです。
…………ただし、右を押したら下へ。左を押したら上へ移動するようになってるはずですが。
これをキチンと上を押したら上へ、下を押したら下へ、左右を押してもカーソルが移動しないようにするにはコモンイベント044の219行目以降。
■キー入力:このコモンセルフ変数4/[入力待ち] 4方向 決定(10) キャンセル(11)
これを使用します。
このコマンドは対応するキーを押すことで指定した変数へ、↓:2、←:4、→:6、↑:8、決定:10、キャンセル:11の値を格納することが出来ます。
つまり、ここで指定したこのコモンセルフ変数4の値で条件分岐してやるとキチンと動くようになるのです。
基本システムで解説すると、
0 | 1 | 2 | 3 | 4 | 5 |
カーソルの初期位置は1なので、最初にV9-39[メニュカーソル位置]に0を代入します。
→を押した時、V9-39[メニュカーソル位置]に1を加算。
←を押した時、V9-39[メニュカーソル位置]にV9-41[[メニュー]コマンド数]に-1を加算します。
そして、V9-39[メニュカーソル位置]をV9-41[[メニュー]コマンド数]で割った余り。つまり V9-39[メニュカーソル位置] % V9-41[[メニュー]コマンド数] を取得するときっちりカーソルの位置を出してくれるというわけです。
例えば→を45回押した場合、45 % 6 = 3 なのでカーソルは3の位置にある、と計算できます。
計算結果をまたV9-39[メニュカーソル位置]に代入してやるとループによって上の方へと戻り、カーソルの位置を描画しなおして戻ってくるのです。
今回の改造では条件分岐で「4の場合」→「8の場合」、「6の場合」→「2の場合」と変換してやるだけで正しく動くようになるのですが。
メニューの項目が6個じゃ足りない! って人は044の254行目以降を弄ってみてください。
メニューを二列にしたいんだけど! って人は044の240行目辺りに上下の分岐を入れ、カーソル位置を上手く変数で表してみてください。
上下に動くと変数の値を2動かし、左右に動くと1動かすように設計すれば、
0 | 1 |
2 | 3 |
4 | 5 |
6 | 7 |
と、これでメニューの基本画面は表すことが出来ました。
このページはこれで完成。次のページではアイテム欄の改造について喋くります。
前へ
このページへのコメント
長らく更新されてないようですが、とてもためになるサイトだと思うので、これからもがんばってください。
ご指摘、ありがとうございます。
修正しました。
> →を押した時、V9-39[メニュカーソル位置]に1を加算。
> ←を押した時、V9-39[メニュカーソル位置]から1を減算します。
←を押した時はV9-39に「カーソル数-1」を加算する形だったと思います。
でないと%を使っても正常に動作しないはずですよ。