ページ 11

セーブ画面にマップ画像を表示したい

Posted: 2019年1月12日(土) 21:03
by ジャングル
何度も質問すみません。

セーブ画面の各項目にマップを表示させたいのですが、
うまくいきません。

SceneManagerが撮影したスナップを流用してスプライトを作り、
それをセーブウィンドウにaddChild()したのですが、
画面左上にそれが固定表示されてしまい各項目に入ってくれません。

また、Window_BaseのdrawFace()を参考にthis.contents.blt()で追加してみましたがエラーが出ます。
(エラーはaddListener is not a functionです。Window_SavefileListに対して行いました。)

※勉強がてら、人のプラグインを使わずに出来るだけ自分でしようとしています。
分かる方がおられましたら宜しくお願いします。
または、そういうプラグインがあれば教えてください。

Re: セーブ画面にマップ画像を表示したい

Posted: 2019年1月12日(土) 21:19
by astral
こんばんは。

焼きノリさんのプラグインが参考になるのではないでしょうか。
https://github.com/Yakinori0424/RPGMakerMVPlugins/tree/master/plugins/YKNR_SaveThumbnail

Re: セーブ画面にマップ画像を表示したい

Posted: 2019年1月12日(土) 22:11
by ジャングル
初めまして。ジャングルといいます。

プラグインを見せてもらいました。
BitmapにaddLoadListener()があるんですね。
このコールバック内でthis.contents.blt()で描画してました。

エラーの原因がわかって良かったです。

ありがとうございました。
このプラグインを参考にして作ってみます。
大変勉強になりました。

Re: セーブ画面にマップ画像を表示したい

Posted: 2019年1月12日(土) 22:16
by 飯尾隼人
ジャングルさん

 こんばんは。問題把握しました。セーブリストの各セーブ事にマップ画像を表示させたいのですね。
 一番大きな問題が、マップの画像をいかに保存するのかだと思われます。
 今回の問題は、astralさんが紹介されたプラグインを参考にされると良いと思います。
 
 参考までに、各セーブデータ毎のゲームタイトル、プレイ時間、パーティーキャラクター画像の描画は下記関数にて記述してあります。

  Window_SavefileList.prototype.drawContents

 この関数の中で、this.contents.blt()にて画像を表示させてあげればセーブデータ毎に画像が表示されるはずです。

>また、Window_BaseのdrawFace()を参考にthis.contents.blt()で追加してみましたがエラーが出ます。

 おそらく引数にSpriteを指定したためと思われます。Bitmapを指定してみてください!

Re: セーブ画面にマップ画像を表示したい

Posted: 2019年1月12日(土) 22:43
by ジャングル
飯尾隼人様ありがとうございます。

とりあえず各項目に画像を表示するところまでは行きました。
明日、現在のセーブデータのみに画像を入れるように分岐してみます。
また、画像を文字列化させてセーブデータに入れることもやってみようと思います。

DataManager.makeSavefileInfo内で、スナップをとりあえずグローバルに入れました(便宜上)
window.bitmap = SceneManager.backgroundBitmap();

Window_SavefileList.prototype.drawContents内でリスナー登録して描画したら各項目にマップ画像が入りました。
if (window.bitmap) {
window.bitmap.addLoadListener(function() {
this.contents.blt(bitmap, 0, 0, bitmap.width, bitmap.height, rect.x, rect.y, 50, 50);
}.bind(this));
}