ページ 11

(〆解決)またまたJSについてお力を...m(_ _)m

Posted: 2016年5月02日(月) 18:06
by KU0
Window_ChoiceList.jsをちょっといじって
選択肢の項目内容を真ん中寄せにしたいと思うのですが
画像

[1]
Window_ChoiceList.prototype.drawItem = function(index) {
var rect = this.itemRectForText(index);
this.drawTextEx(this.commandName(index), rect.x, rect.y);
};

↑の記入を消して

[2]
Window_ChoiceList.prototype.itemTextAlign = function() {
return 'center';
};

↑を入れると真ん中寄せには出来たのですが...

[1]のを消してしまうと制御文字が使えなくなってしまうので
[1]をどう変更すれば真ん中寄せにできるのかを知りたいのですが...

もしどなたかよろしければよろしくお願いしますm(_ _;)m

Re: またまたJSについてお力を...m(_ _)m

Posted: 2016年5月02日(月) 19:01
by 名無し蛙
お疲れ様です。

確かにdrawTextExの仕様を考えたら真ん中に位置調整するのは難しいですね。
ざっと見るとtextWidthEx(text)というメソッドがあるようなのでこれで自力でx位置を調整したらどうでしょう?
左寄せ表示がx位置0とした場合、真ん中表示のx位置は「(表示矩形幅-文字列長) / 2」になります。
これをオフセット値として加算すれば真ん中に表示されるはずです。

コード: 全て選択

Window_ChoiceList.prototype.drawItem = function(index) {
    var rect = this.itemRectForText(index);
    this.drawTextEx(this.commandName(index), rect.x, rect.y);
};

これを

コード: 全て選択

Window_ChoiceList.prototype.drawItem = function(index) {
    var rect = this.itemRectForText(index);
    var text = this.commandName(index);
    var x = rect.x + ((rect.width - this.textWidthEx(text)) / 2);
    this.drawTextEx(text, x, rect.y);
};

試してないけどこれでいけるはず…

Re: またまたJSについてお力を...m(_ _)m

Posted: 2016年5月02日(月) 20:31
by KU0
>名無し蛙 様
いま試してみたところ、かなり良い感じで真ん中に調整されました!
こんなにも早く適切な返答をしていただきありがとうございました!m(_ _;)m