こんにちは。
utiyasu777 さんが書きました: 2025年6月18日(水) 06:30
閲覧有難うございます。
Basu様が制作された「ChoiceItemImage.js」を使わせて頂いているのですが
ツクール本体を最新版にアップデートすると以下のエラー文が出て起動出来なくなってしまいました。
TypeError
Cannot use 'in' operator to search for 'faceSize' in null
どなたか最新版でも起動出来るよう修正したChoiceItemImage.jsを作っていただけないでしょうか?
よろしくお願い致します。
Basu様作 ChoiceItemImage.js
https://plugin-mz.fungamemake.com/archives/7194 (ツクプラの紹介ページへのリンクです)
アイテム選択画像機能を実装します。
エラーメッセージに関して、
実は、ゲームのウィンドウに表示されるエラーメッセージには、ほとんど情報がなくて、
エラーについて調査するためには、
F8 もしくは F12 を押したときに表示される DevTools というウィンドウの Console というがタブで表示される、
エラー情報(赤字で表示される情報) が必要になります。
今回はこちらでエラー原因を特定できますので、大丈夫ですが、
次回以降、上記の画像を添付していただけるようお願いします。
エラーの発生原因ですが、
ChoiceItemImage.js の 199 行目の
コード: 全て選択
const textMargin = ImageManager.faceWidth + params.textMargin;
という命令の中の
コード: 全て選択
ImageManager.faceWidth
という部分が原因となっています。
この命令文は、今までは 144 という値を返すように設定されていましたが、
最新版のコアスクリプトのバージョン 1.9.0 で、顔画像のサイズを選択できるようになったため、
データベースの顔サイズの設定内容を取得するように変更されました。
ところが、ChoiceItemImage.js の 199 行目で取得しようとするタイミングでは、
データベースの内容が読み込まれておらず、取得することができません。
そのため、提示されているエラーが発生しています。
textMargin という変数は、
アイテムのヘルプを描画する関数内でしか使われていないませんし、
その関数の中であれば、顔画像のサイズはきちんと取得できるはずなので、
199 行目の命令文を、この関数の中に、移動してしまえばいいかな、と思います。
choiceItemImage.js ファイルのバックアップをきちんと取ってから、
ファイルを JavaScript を編集できるソフトウェアで開き、以下の編集を行ってください。
- 199 行目 の
コード: 全て選択
const textMargin = ImageManager.faceWidth + params.textMargin;
という部分を
306 行目あたり
コード: 全て選択
const width = this.innerWidth - ImageManager.faceWidth;
となっている部分の次の行に移動してください。
- もし、ヘルプウィンドウが、アイテムリストのウィンドウと被ってしまっている、
という場合には、アイテムリストウィンドウの位置を下げるために、
1. の変更を行うと 370 行目あたりにくる
コード: 全て選択
_Window_EventItem_Start.apply(this, arguments);
という部分の次の行に
コード: 全て選択
this.y += this._helpWindow.height + 4;
という命令文を挿入してください。
以上で、正常な動作になるかなと思います。
ご確認ください。