独学ツクールブログ

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

<< RGSS奮闘記36:名前ウィンドウの表示1 | main | RGSS奮闘記38:名前ウィンドウの表示3 >>

[ - ] スポンサーサイト

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

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] RGSS奮闘記37:名前ウィンドウの表示2

〜前回のあらすじ〜
口は災いの元

Window_Messageクラスの実装に入るが、とりあえず必要なものまとめ。
まず、$game_temp.speakerがnilでも空白でもない場合に名前ウィンドウを表示する機能。これは当然。
それから、ウィンドウを破棄するterminate_messageメソッドに、名前ウィンドウがあったら破棄する定義の追加。
あとは、話者の名前を取得するメソッドと名前の文字数を取得するメソッド。
こんなところだろうか。


では早速実装に移ろう。

alias iknw_terminate_message terminate_message
def terminate_message
  iknw_terminate_message
  if @name_window
    @name_contents.dispose
    @name_contents = nil
    @name_window.dispose
    @name_window = nil
  end
end

def speaker
  $game_temp.speaker
end

def name_length
  speaker.split(//).size
end

terminateはウィンドウを破棄するメソッドなので、もし@name_windowがあったらそれを破棄するという定義を追加するだけだ。ここで@name_windowと@name_contentsのふたつが出ているが、これについては次回名前ウィンドウ生成の時に説明する。
speakerは単に$game_temp.speakerを返すメソッド。つまり無くても構わないのだが一応のちの記述量を減らすため。あとは今後のカスタマイズの際にメソッド経由のほうが変更が利きやすいから。
name_lengthは名前の文字数を返す。ここでsplit(//)などという方法を使っているのは、Rubyに元からあるString#sizeやString#lengthが文字列の「バイト数」を返すメソッドだからだ。そのまま使うと半角英数字以外は一文字のlengthが「3」と返ってくる。これをいちいち計算するというのも無茶な話なので、splitが文字単位で切ってくれることを利用し、speaker.split(//)で得られる配列の長さという形で文字数を取得している。

次回は名前ウィンドウ表示部分。
やることはrefresh内で新規ウィンドウを作るだけなのだが、いろいろと都合があって少々長くなるので今回はここまで。


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

| 2011.02.24 Thursday 22:21 | comments(0) | trackbacks(0) |

[ - ] スポンサーサイト

| 2018.05.23 Wednesday 22:21 | - | - |

コメント

コメントする






この記事のトラックバック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