『RPGツクールMZ』文字表示関連のメソッド一覧
とやってきて、副産物としてメソッド一覧みたいなのができたので公開しておきます。
例によって『RPGツクールMZ』非公式JavaScriptリファレンスのページに適宜リンクしてきます。
MVに比べてかなり減ったとはいえ、まだまだウィンドウが機能(メソッド)を持ちすぎてます。
TextStateクラスを定義して、textState.newLineX() みたいにする。もうひとつ Bitmapクラスを継承した BitmapTextクラスとか作る。さらに必要なら MessageManagerクラスも作る。というふうにしてメソッドを分散すべきだったんじゃないかなぁ。
(ちなみに現在の MV.TextStateは単なる Object の一種で、専用のメソッドなどは付いていません)
あと、他のクラスと被ってるメソッドもちょこちょこあって、この辺も機能の分離が進んでない感じでもにょります。
このへんMVとの互換性をどの程度残すかとの兼ね合いもあると思うんですが、個人的には中途半端な互換性など捨てて完全に刷新して欲しかったですね。
ただ、刷新した挙句により混乱したコードになったりしたら目も当てられないですが。
そんなわけで、 Window_Base と Window_Message 、ついでに Scene_Base と Scene_Message クラスに含まれる文字関連メソッドを一覧にしてみました。
ウィンドウのコード読むときに、文字関係ないなら無視するメソッド一覧と言ってもいいでしょう。
ちなみに文字に関係あるクラスは他にも TextManager とか $gameMessage( Game_Message )など色々あってカオスです!
Window_Base
文字表示関係は、ほぼこの Window_Baseクラスが持ってますね。
特に drawText() と drawTextEx() を理解すれば、ウィンドウに文字を描画する関係は、ほぼ事足ります。
drawTextEx() は制御文字を理解してくれるので、他の部分わからなくても制御文字の使い方わかってれば、それをまるっと渡してやればいいので楽チンですね。
文字データ
-
actorName()- アクター名を返す -
partyMemberName()- メンバー名を返す
レイアウト用
-
baseTextRect()- 名前・ヘルプ用の描画領域を返す -
calcTextHeight()- 行の高さを返す -
fittingHeight()- 指定行数に必要なウィンドウの高さを返す -
lineHeight()- 行の高さを返す -
itemHeight()- 項目の高さを返す(関係ないはずだが使われている) -
maxFontSizeInLine()- 指定行での最大フォントサイズを返す -
textSizeEx()- 制御文字による変更後の文字サイズを返す -
textWidth()- 文字列の幅を返す
文字列の処理
-
convertEscapeCharacters()- \V[n]、\N[n]、\P[n]、\G、\\ の変換、\ は ESC に変換 -
createTextBuffer()- バッファ用の文字列を返す -
createTextState()- MV.TextState を生成 -
makeFontBigger()- フォントを大きく \{ -
makeFontSmaller()- フォントを小さく \} -
obtainEscapeCode()- エスケープコードを返す -
obtainEscapeParam()- エスケープコードの引数を返す -
processColorChange()- 色の変更処理 \C[n] -
processControlCharacter()- コントロール文字の処理 -
processDrawIcon()- アイコン表示 \I[n] -
processEscapeCharacter()- エスケープ文字の処理 -
processNewLine()- 改行の処理 -
processAllText()- 全文字の処理 -
processCharacter()- 文字の処理
文字の描画
-
changeOutlineColor()- 文字の輪郭色を設定 -
changeTextColor()- 文字の色を設定 -
drawText()- 文字の描画 -
drawTextEx()- 文字の描画(制御文字) -
flushTextState()-textState.bufferに溜まった文字を描画 -
resetFontSettings()- フォント設定を規定値に戻す -
resetTextColor()- 文字色を規定値に戻す
Window_Message
Window_Message は、メッセージを瞬時に表示するのではなく、1文字ずつ表示するための時間や入力制御やってます。
基本的には、ここを直接いじることはないと思うんですが。
オーバーライドというのは、親クラスのメソッドの機能を書き換えてるやつです。
フラグ関連
-
clearFlags ()- [文章の表示]で使うフラグを消去 -
doesContinue()- 文章の続きが必要か -
isEndOfText()- 指定したテキスト状態が文末か -
needsNewPage()- 次のページが必要な状態か -
shouldBreakHere()- 文字をひとつずつ表示するモードか
状態(ステート)制御
-
startPause()- 一時停止の開始 -
startWait()- 待ち時間の開始 -
updateShowFast()- ボタン・タップによる早送りをチェック -
updateWait()- 待ち時間の更新 -
updateMessage()- 文章表示
ページ・改行制御
-
newLineX()- 行頭のx位置を返す -
newPage()- 新規ページ(ウィンドウ) -
onEndOfText()- 表示終了時のハンドラ -
startMessage()- 文章表示準備
オーバーライド
processControlCharacter()processNewLine()
Scene_Base
Scene_Base は『RPGツクールMZ』になって、Window_Baseクラスの子孫クラスのコンストラクタには Rectangleを渡す仕様に統一されたので、事前に大きさを測る必要が出てきたので追加されたのが calcWindowHeight() です。
後付けでの統一なので prototype のメソッド直で呼んでたりとか、結局後で move() メソッドとかで大きさを設定し直したりしてます。
なんとも歪な感じですが、以前のコンストラクタに渡す値が行き当たりばったりのカオスな状態よりは、だいぶマシな感じはします。
calcWindowHeight()
Scene_Message
Scene_Message の messageWindowRect() は Scene_Base の calcWindowHeight() で高さを決めるのに加えて、幅も決めた矩形範囲を生成するやつですね。
createMessageWindow()messageWindowRect()
まとめ
特にまとめるような何かもないんですけど(笑)
ざっと並べてみたものの、すぐ忘れるんですよね。
すぐ忘れるからリファレンスとか書いたんだけど、そもそもそういうメソッドがあったという段階から忘れるのでどうにかしてほしい(どうにもならない)
基本的には、記憶が新鮮なうちに一気に作ってしまうしかないですね。
またかなり近い機能として、コマンド選択(メソッド名に item がついてる系)があったりします。
itemがゲーム中で使う[アイテム]の意味で使われていたり、[スキル]の意味も含んでいたり、ここで言ってる[選択項目]の意味で使われていたりして、これまたカオスで理解を妨げます。
その辺はしっかり調べてないので、必要になったらまた調べて書くかもしれません。
いや「次に書くのは、ディスプレイの前のあなたたちです!」(『爆笑オンエアバトル』メソッド)
Discussion