ページ 1 / 1
【解決】AltMenuScreen改変でレベル表示の幅指定ができない
Posted: 2020年2月24日(月) 15:25
by ムノクラ
公式プラグインAltMenuScreenの改変を先日試みました。
8人パーティで試した所、下記のような表示になってしまいます。
レベル表示だけが縮まらない状態です。
コード: 全て選択
this.drawActorLevel(actor, x, bottom - lineHeight * 4, width);
どこを変更すると名前のように枠に収まるのか、ご指導お願いいたします。
追記
コアをGrepしたら
コード: 全て選択
Window_Base.prototype.drawActorName = function(actor, x, y, width) {
Window_Base.prototype.drawActorLevel = function(actor, x, y) {
と根本的に仕様が違っていて、レベルにはそのままではwidthが働かないということでしょうか?
Re: AltMenuScreen改変でレベル表示の幅指定ができない
Posted: 2020年2月24日(月) 15:55
by 剣崎 宗二
ムノクラ さんが書きました:と根本的に仕様が違っていて、レベルにはそのままではwidthが働かないということでしょうか?
現コアの仕様上はその通りです。
改変の為には一例として以下。
コード: 全て選択
Window_Base.prototype.drawActorLevel = function(actor, x, y, width) { //widthを受け入れるようにする
var internalWidth = width;
if (!internalWidth)
{
//widthが提供されてない際の対処(実質undefined)としてデフォルト値セット
internalWidth = 120;
}
this.changeTextColor(this.systemColor());
this.drawText(TextManager.levelA, x, y, 48);
this.resetTextColor();
this.drawText(actor.level, x + internalWidth - 38, y, 36, 'right'); //数値の相対位置をwidthにも依存するよう改変。右寄せの為やや多めに幅取り
};
Re: AltMenuScreen改変でレベル表示の幅指定ができない
Posted: 2020年2月24日(月) 16:19
by ムノクラ
剣崎 宗二 さんが書きました:ムノクラ さんが書きました:と根本的に仕様が違っていて、レベルにはそのままではwidthが働かないということでしょうか?
現コアの仕様上はその通りです。
改変の為には一例として以下。
コード: 全て選択
Window_Base.prototype.drawActorLevel = function(actor, x, y, width) { //widthを受け入れるようにする
var internalWidth = width;
if (!internalWidth)
{
//widthが提供されてない際の対処(実質undefined)としてデフォルト値セット
internalWidth = 120;
}
this.changeTextColor(this.systemColor());
this.drawText(TextManager.levelA, x, y, 48);
this.resetTextColor();
this.drawText(actor.level, x + internalWidth - 38, y, 36, 'right'); //数値の相対位置をwidthにも依存するよう改変。右寄せの為やや多めに幅取り
};
希望通りの動作となりました。
ありがとうございます。
ご指導いただいたコードは何となく何をしているのかは分かる気がするのですが、同じdrawTextを使用している名前や職業のコードをコピーしても思うようには動かなかったのが、未だに理解できていません。
コード: 全て選択
Window_Base.prototype.drawActorLevel = function(actor, x, y, width) {
width = width || 168;
でwidthが動作するかは試したのですが、動きませんでした。
この差のヒントになりそうな、箇所はないでしょうか?
Re: AltMenuScreen改変でレベル表示の幅指定ができない
Posted: 2020年2月24日(月) 18:20
by 剣崎 宗二
「何故動かないか」については関連する部分のコードを全部出して頂かないと分かりませんが、ざっくりで可能性を言えば「drawText自体のパラメーターにwidthが組み込まれていないと当然影響されません」ですね。
数値が間違っている事を疑っている際は、console.logを差し込みその変数の中身を見てみましょう。
逆に数値が正しいのに動作が不可解な場合は、「その数値は本当に正しいスロット(パラメーター)に差し込まれていますか?」
Re: AltMenuScreen改変でレベル表示の幅指定ができない
Posted: 2020年2月25日(火) 12:21
by ムノクラ
剣崎 宗二 さんが書きました:「何故動かないか」については関連する部分のコードを全部出して頂かないと分かりませんが、ざっくりで可能性を言えば「drawText自体のパラメーターにwidthが組み込まれていないと当然影響されません」ですね。
数値が間違っている事を疑っている際は、console.logを差し込みその変数の中身を見てみましょう。
逆に数値が正しいのに動作が不可解な場合は、「その数値は本当に正しいスロット(パラメーター)に差し込まれていますか?」
動かないと思っていたコードを書き出しながら、質問を整理していたら、ミスが理解できました。
動かなかったコードその1
コード: 全て選択
Window_Base.prototype.drawActorLevel = function(actor, x, y, width) {
width = width || 168;
this.changeTextColor(this.systemColor());
this.drawText(TextManager.levelA, x, y, 48);
this.resetTextColor();
this.drawText(actor.level, x + 84, y, 36, width, 'right');
};
動いたコード
コード: 全て選択
Window_Base.prototype.drawActorLevel = function(actor, x, y, width) {
width = width || 168;
this.changeTextColor(this.systemColor());
this.drawText(TextManager.levelA, x, y, 48);
this.resetTextColor();
this.drawText(actor.level, x, y, width, 'right');
};
単純な書式のミスでした…お恥ずかしい…
ご指導いただき、ありがとうございました。