【解決済み】動的文字列ピクチャ生成で変数に代入された値を右詰めにしたい

アバター
にいやん
記事: 218
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

【解決済み】動的文字列ピクチャ生成で変数に代入された値を右詰めにしたい

投稿記事by にいやん » 2017年9月22日(金) 16:52

こんにちは。
変数に代入された値を右詰めで表示させたいのですが可能でしょうか?
D_TEXT_SETTING ALIGN 2 で表示できるかと思ったのですが画像のように左揃えになってしまいます。使い方を間違っているようでしたらご指摘していただければと思っています。

新規キャンバス.jpg
新規キャンバス.jpg (73.63 KiB) 閲覧数: 8519 回


新規キャンバス2.jpg
新規キャンバス2.jpg (58.9 KiB) 閲覧数: 8519 回
最後に編集したユーザー にいやん on 2019年5月12日(日) 23:38 [ 編集 1 回目 ]

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 動的文字列ピクチャ生成で変数に代入された値を右詰めにしたい

投稿記事by にゃたま » 2017年9月22日(金) 20:30

にいやん様

にいやん さんが書きました:こんにちは。
変数に代入された値を右詰めで表示させたいのですが可能でしょうか?
D_TEXT_SETTING ALIGN 2 で表示できるかと思ったのですが画像のように左揃えになってしまいます。使い方を間違っているようでしたらご指摘していただければと思っています。


こちら前回私もわからなかったので応急処置で対処したことがあるのでお伝えしておきます。
以下のスクリプトの修正で/V[変数ID,桁数]で右詰めできました。
やってることは0詰めしてるものをスペースに置き換えているだけです。戻したい場合は
//return this.getVariablePadZero($gameVariables.value(parseInt(arguments[1], 10)), arguments[2]);
のコメントを外して
return $gameVariables.value(parseInt(arguments[1], 10)).padSpace(arguments[2]);
をコメント化してください。
正式な回答はトリアコンタン様の対応をお待ち下さい。

コード: 全て選択

//=============================================================================
// Window_Base
//  文字列変換処理に追加制御文字を設定します。
//=============================================================================
var _Window_Base_convertEscapeCharacters      = Window_Base.prototype.convertEscapeCharacters;
    Window_Base.prototype.convertEscapeCharacters = function(text) {
        text = _Window_Base_convertEscapeCharacters.call(this, text);
text = text.replace(/\x1bV\[(\d+)\,\s*(\d+)\]/gi, function() {
            //return this.getVariablePadZero($gameVariables.value(parseInt(arguments[1], 10)), arguments[2]);
            //追加
            return $gameVariables.value(parseInt(arguments[1], 10)).padSpace(arguments[2]);
        }.bind(this));
       
        <中略>
       
        return text;
    };
       
    //追加
    String.prototype.padSpace = function(length){
        var s = this;
        while (s.length < length) {
           s = ' ' + s;
        }
        return s;
    };
    //追加
    Number.prototype.padSpace = function(length){
        return String(this).padSpace(length);
    };
アバター
にいやん
記事: 218
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

Re: 動的文字列ピクチャ生成で変数に代入された値を右詰めにしたい

投稿記事by にいやん » 2017年9月22日(金) 21:22

にゃたまさん、返信ありがとうございます。
にゃたまさんのやり方で解決することが出来ました。
元々、D_TEXT_SETTING ALIGN 0 は \V[n,m] とセットで使うという認識なんでしょうか。良く分からないですが解決できて良かったです、ありがとうございました。
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: 動的文字列ピクチャ生成で変数に代入された値を右詰めにしたい

投稿記事by トリアコンタン » 2017年9月22日(金) 21:49

こんばんは。
動的生成文字列生成プラグインでは、文字を描画できる最低限の横幅と高さしか確保しません。
以下のコマンドは、複数行表示したときに行同士の揃えを設定するものです。

コード: 全て選択

D_TEXT_SETTING ALIGN 2


上が左揃え(デフォルト)で、下が右揃えです。
image_20170922_214558.jpg


もしプラグインに変更を加えずに右揃えにしたい場合、ピクチャの原点を右上にする(スクリプトによる設定が必要)か上記の設定を利用して二行目に揃えたいだけの全角スペースを指定します。
参考までに。
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
アバター
にいやん
記事: 218
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

Re: 動的文字列ピクチャ生成で変数に代入された値を右詰めにしたい

投稿記事by にいやん » 2017年9月22日(金) 22:09

トリアコンタンさん、いつもお世話になっています。
複数行表示のときに揃える機能だったのですね。了解致しました。

“MV:質問” へ戻る