【解決済み】制御文字が入った場所のx,yの取得方法

アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

【解決済み】制御文字が入った場所のx,yの取得方法

投稿記事by ビービー » 2017年9月10日(日) 17:07

現在、制御文字でfillRectを使い文字を四角で囲みたいなーと思い挑戦中なのですが
制御文字が入った場所の特定ができず困っています。

とりあえず最初の行だけでもできればいいかなーと0,0にしてみたものが以下です。

コード: 全て選択

var _Window_Base_prototype_processEscapeCharacter = Window_Base.prototype.processEscapeCharacter;
Window_Base.prototype.processEscapeCharacter = function(code, textState) {
    _Window_Base_prototype_processEscapeCharacter.call(this, code, textState);
    switch (code) {
    case 'B':
        this.processBlackFillRect(this.obtainEscapeParam(textState), textState);
        break;
    }
};

Window_Base.prototype.processBlackFillRect = function(textState) {
    var Width = this.contents.fontSize / 2 * textState + 4;
    this.contents.paintOpacity = 64;
    this.contents.fillRect(0, 0, Width, this.contents.fontSize + 4, this.textColor(15));
    this.contents.paintOpacity = 255;
};

\B[8]と入力すると半角で8文字分の四角形が描画されるというものになります。

アイコンと同じでtextState.x + 2, textState.y + 2が使えると思っていたんですが使えず…
どうすれば制御文字が入力された位置を取得できるでしょうか?
せめて現在の行数だけでもわかると助かります。よろしくお願いします。
最後に編集したユーザー ビービー on 2017年9月15日(金) 23:22 [ 編集 1 回目 ]

------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: 制御文字が入った場所のx,yの取得方法

投稿記事by トリアコンタン » 2017年9月11日(月) 02:17

こんばんは!
ご推察の通り、textStateから値を取得できます。
ご提示のコードでは「processBlackFillRect」の引数の数が呼び出し元と、呼び出し先とで一致していません。
呼び出し元ではちゃんとtextStateを引数として渡しているので、あとはメソッド「processBlackFillRect」に2番目の引数を追加すればOKです。

おそらく単純な取り違えかと思います。JavaScriptはこういう場合も特にエラーにはならないのが難しいところですね。

以下が実装例になります。

コード: 全て選択

    var _Window_Base_prototype_processEscapeCharacter = Window_Base.prototype.processEscapeCharacter;
    Window_Base.prototype.processEscapeCharacter = function(code, textState) {
        _Window_Base_prototype_processEscapeCharacter.call(this, code, textState);
        switch (code) {
            case 'B':
                this.processBlackFillRect(this.obtainEscapeParam(textState), textState);
                break;
        }
    };

    Window_Base.prototype.processBlackFillRect = function(charNumber, textState) {
        var Width = this.contents.fontSize / 2 * charNumber + 4;
        this.contents.paintOpacity = 64;
        this.contents.fillRect(textState.x + 2, textState.y + 2, Width, this.contents.fontSize + 4, this.textColor(15));
        this.contents.paintOpacity = 255;
    };
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

Re: 制御文字が入った場所のx,yの取得方法

投稿記事by ビービー » 2017年9月11日(月) 13:07

こんにちは!

いつもありがとうございます!
教えていただいたコードに書き換えたところうまく動作してくれました!
本当にありがとうございました!
image_20170911_130049.jpg
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/

“MV:質問” へ戻る