ステータス画面に立ち絵表示【追記】

返信する
moyashi
記事: 7
登録日時: 2016年2月20日(土) 22:27

ステータス画面に立ち絵表示【追記】

投稿記事 by moyashi »

ステータス画面右側にキャラごとに立ち絵を表示したいのですが、
何か良い方法はありますでしょうか
添付ファイル
mv.jpg
mv.jpg (16.03 KiB) 閲覧された回数 5712 回
最後に編集したユーザー moyashi [ 2016年2月22日(月) 00:09 ], 累計 1 回
moyashi
記事: 7
登録日時: 2016年2月20日(土) 22:27

Re: ステータス画面に立ち絵表示

投稿記事 by moyashi »

追記:
メモ欄の<status_picture:画像ファイル名>から立ち絵の表示をしようと思い、
Window_Statusの部分を以下のように変更したのですが、ステータス画面を2度開かないと立ち絵が表示されません。
原因が分かる方いらっしゃいましたらよろしくお願いします。

コード: 全て選択

Window_Status.prototype.refresh = function() {
    this.contents.clear();
    if (this._actor) {
        var lineHeight = this.lineHeight();
        this.drawPicture();
        this.drawBlock1(lineHeight * 0);
        this.drawHorzLine(lineHeight * 1);
        this.drawBlock2(lineHeight * 2);
        this.drawHorzLine(lineHeight * 6);
        this.drawBlock3(lineHeight * 7);
	
    }
};

Window_Status.prototype.drawPicture = function() {
	var bitmapName =$dataActors[this._actor.actorId()].meta.status_picture;
        var bitmap =ImageManager.loadPicture(bitmapName);
        this.contents.blt(bitmap, 0, 0, 400, 400, 600, 184);
};
名無し蛙
記事: 352
登録日時: 2015年11月23日(月) 02:46

Re: ステータス画面に立ち絵表示

投稿記事 by 名無し蛙 »

あーそれ自分もハマりましたね
VXAのCacheの感覚で使ってると事故ります

おそらく画像を読み込むのに0.0X秒の時間が掛かるんだと思います
読み込みが完了するまで該当bitmapは使用出来ません
この0.0X秒の間にwindowに画像をblt(コピー)する処理をすると反映されない、という事だと思います
つまり画像の初読み込みと同フレームでその画像を使用してはいけません

Window.png等のシステム画像と同じくScene_Boot内でロードしたり
シーンをcreateするタイミングでロード、startのタイミングでリフレッシュする等でズラす必要があります
createとstartの間でisReady()処理を使って空回転させてるのでこれなら最短で反映されると思います
自分も最近知った事なので間違ってたら他の人が指摘してください
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

Re: ステータス画面に立ち絵表示【追記】

投稿記事 by 奏ねこま »

ImageManager.loadPictureによる画像の読み込みは、初めて読み込むときには割りと時間がかかります。

var bitmap =ImageManager.loadPicture(bitmapName); ← このImageManager.loadPictureでの画像読み込みが完了する前に
this.contents.blt(bitmap, 0, 0, 400, 400, 600, 184); ← このbltが実行されてしまい、画像が反映されない

事前にImageManager.loadPictureで読み込んで置いてキャッシュしておくしかありません。
やりようはいくらでもありますが、一番簡単そうなのは、Window_MenuStatusで同じようなことをしているので
そこに間借りして入れてしまうことでしょうか。

コード: 全て選択

Window_MenuStatus.prototype.loadImages = function() {
    $gameParty.members().forEach(function(actor) {
        ImageManager.loadFace(actor.faceName());
        ImageManager.loadPicture($dataActors[actor.actorId()].meta.status_picture);    // ここで事前に読み込みしてキャッシュしておく
    }, this);
};
参考になりましたら幸いです。
moyashi
記事: 7
登録日時: 2016年2月20日(土) 22:27

Re: ステータス画面に立ち絵表示【追記】

投稿記事 by moyashi »

回答ありがとうございます。
立ち絵を表示することができました。

画像の読み込み時間が原因だったのは気づきませんでした…。
田中山
記事: 3
登録日時: 2016年6月12日(日) 22:40

Re: ステータス画面に立ち絵表示【追記】

投稿記事 by 田中山 »

数ヶ月前の記事に合間から申し訳ありません。
こちらのプラグイン自作ゲームで使ってみたいのですがよろしいでしょうか?
よろしければ許可をくだされば幸いです。
返信する

“MV:質問”に戻る