Hatena::ブログ(Diary)

senzogawaのNな日々 このページをアンテナに追加 RSSフィード

2004 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 |
2011 | 01 | 03 | 04 | 05 | 06 |
2012 | 01 | 08 | 09 |
2013 | 02 |

2005-03-05 カスタムセレクト

カスタムセレクト

| カスタムセレクトを含むブックマーク カスタムセレクトのブックマークコメント

はじめに

 今回はカスタムウェイト(id:senzogawa:20050221)からの続きで、カスタムセレクトについて詳細を説明していく。

選択肢表示対応

 まず、選択肢表示対応だが、何よりも先に決める必要があるのは、選択肢の表示位置だ。

 特に選択肢の表示位置をテキストウィンドウ上ではなく、画面中央に表示したいなどの場合、スプライトを使う必要が出てくる。

 そして、スプライトを使うと問題となるのは、やはり非表示処理と削除処理のタイミングだろう。スプライトを使わなければ、NScripterがやってくれるところだ。

 他に決めておく必要のある項目は以下だ。

  1. スプライト番号:選択肢の表示位置をテキストウィンドウ上とする場合は必要無い。表示する場合は立ち絵の裏にならないよう、humanzで指定した番号未満の番号とする。
  2. 表示位置:テキストウィンドウ上とする場合、初期位置をgetcursorposで取得した位置として、2行目以降は行高さ分(文字高さ+行間)を加算した値とする。
     もちろん、X座標をずらして横にならべることもできる。
  3. 非表示のタイミング:カスタムウェイトと同様で、対処する方がいいだろう。

 選択肢文字列は選択時に画像を読み込む。その際、選択肢の表示位置をテキストウィンドウ外とする場合は、文字列を渡すとスプライトを読み込むようなルーチンを作っておくといい。

 特に、画面中央といくつかの選択肢の中央を合わせる場合は、座標を計算する処理もルーチンとした方が綺麗になるだろう。

 テキストウィンドウ上で通常通り表示する場合なら、必要なのは、せいぜい以下のルーチンだけだ。

  1. 選択肢のボタン定義(cselbtnにより、順次定義する)

 しかし、画像中央に表示する場合は以下が必要となる。ルーチンの数だけでも面倒臭さが充分わかる。

  1. 選択肢画像の読み込み(選択肢を画像として読み込む)
  2. 選択肢画像のボタン定義(読み込んだ選択肢をボタンとして定義する)
  3. 選択肢画像の削除(選択肢画像を削除する)
  4. 選択肢画像の表示(選択肢画像を表示する)
  5. 選択肢画像の非表示(選択肢画像を非表示にする)

 選択肢を画像ボタンとして表示させるので、exbtnを使って点滅などの細工もできたりする。

システムボタン対応

 次に、システムボタンだが、基本的にはカスタムウェイトと変える必要は無い。

 ただ、SKIPとAUTOを無効なボタンとしたい場合、専用のボタン定義ルーチンが必要になる。

 といっても内容は、SKIPとAUTOについてのボタン定義を抜くだけなので、さほど面倒ではない。

 無効ボタンを淡色表示としたい場合は少し面倒で、*customselに入った時にボタン表示を切り替え、選択された後で戻す必要がある。

マウス、キーの対応

 最後にマウスとキーの対応は、カスタムウェイトとほぼ同様だが、左クリックとホイール下は無視するところが違いだろう。

 これも単純に処理を入れなければいいだけだ。

 ちなみにカスタムウェイトで処理をルーチン化しておいた場合、ここでも同じように呼べるようになるので楽ができる。

 今回は以上。説明したルーチンなどを実装したサンプルを以下に置いておく。

http://senzogawa.s90.xrea.com/dl/customselect.zip

 あまり綺麗なやり方ではないが、非表示対応も入れてみた。

トラックバック - http://d.hatena.ne.jp/senzogawa/20050305
Connection: close