独学ツクールブログ

ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。

<< RGSS奮闘記16:文字色をカスタマイズするその6 | main | RGSS奮闘記18:文字色をカスタマイズするその8 >>

[ - ] スポンサーサイト

一定期間更新がないため広告を表示しています

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] RGSS奮闘記17:文字色をカスタマイズするその7

〜前回のあらすじ〜
キャーッ!置換よーっ!

今回はWindow_Message#refreshの中の文字色を変更する部分。
若干ややこしいが、ここまでくればそう大変なことでもないので大丈夫だ。



と、その前に、この部分を改造するにあたっての前提として挙動の簡単な説明を。
メッセージを表示する部分では、「文字列を1文字ずつに分割し、制御文字部分を取り除きながら1文字ずつ描画する」という動作をしている。これはもちろん制御文字による色変えなどの処理に対応するためである。この処理をスムーズに行うために、「¥c[1]」の形のままでは処理がややこしくなってしまうので制御文字部分は「¥001」という特殊な「1文字」に置換されているのである。

さてそれを踏まえて、文字色変更は100行目から109行目の部分。

if c == "¥001"
  text.sub!(/¥[([0-9]+)¥]/, "")
  color = $1.to_i
  if color >= 0 and color <= 7
    self.contents.font.color = text_color(color)
  end
  next
end
1文字ずつ切り取られたメッセージ文字列は、一時的な変数cに格納されている。
そこで、「cが"¥001"の場合」つまり文字色変更の制御文字を使用している場合として場合分けしている。

まず102行目。sub!メソッドはgsub!とは違い最初にマッチしたものだけを置換する。またここではブロックはつかず第2引数を指定しているので、マッチした個所は第2引数の値に置換されることになる。
つまり、"¥001"が見つかった時点ですぐ後ろにある色指定部分を削除するということになる。
なのでここはやはり「0-9」を「¥w」に変更する。

103行目。一時的変数colorに、「$1.to_i」を代入している。
String#to_iメソッドは文字列を数値に変換する。先頭から順に変換していき、数字ではない文字が現れた時点で終了する。
今回、数字ではない文字も使用するのでこの部分はカット。

104行目から106行目はif分岐なのだが……実はここはおかしい。Window_Base#text_colorは引数colorが0未満もしくは8以上の場合はnormal_colorになるようになっている。だから本当はこんな分岐は必要ないはずなのだ。どちらにせよ数値以外も使うのでここの分岐も削除。

さて、変数colorを使わなくなったので、105行目のtext_colorメソッドの引数を$1に変更して直接渡してしまおう。

ここまでの改造結果は以下の通り。
if c == "¥001"
  text.sub!(/¥[(¥w+)¥]/, "")
    self.contents.font.color = text_color($1)
  next
end
さて、改造としては以上で終了だが、このままでは少々無理がある。特にWindow_Baseのtext_colorを大幅に変更したあたり。
なので次回、その辺をきちんと修正する。


タグ:[Ruby] [RGSS] [素材] [Window_Base]

| 2011.01.17 Monday 21:40 | comments(0) | trackbacks(0) |

[ - ] スポンサーサイト

| 2018.05.23 Wednesday 21:40 | - | - |

コメント

コメントする






この記事のトラックバックURL

トラックバック

このページの先頭へ▲

Twitter

WebClap

Blogram

ブログランキングならblogram

calendar

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< October 2019 >>

categories

archives

Amazon

selected entries

recent comment

recent trackback

recent ranking

links

search this site.

sponsored links

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM