画像表示について

ichi
記事: 14
登録日時: 2018年2月12日(月) 00:10

画像表示について

投稿記事by ichi » 2018年2月21日(水) 02:19

こんばんわ。

初歩的な質問になりますがご容赦ください。

現在、スクリプトにて新規画面を作成しており、その中で画像を表示したいと考えております。

下記のようなソースコードで画像を表示しようとしておりますが、新規画面表示の際、
一度目の画面表示では、画像が表示されず、二度目の画面表示では画像が表示される状態です。

調べた限り、二度目は画像がキャッシュされている為、表示できているようだったので、
下記ソースコードを、事前の読込のメソッド、実際に表示させるメソッドにそれぞれ組み込めばできるかなと思ったのですが、うまくいかず。。。
キャッシュの処理について、ご存知の方がおられましたらご教授ください。
(そもそも画像表示の解決方法として適切なのかも気になりますが。。。。)

〇表示するソースコード
Window_Sample.prototype.loadSample = function() {
var bitmap = ImageManager.loadSampleImage(FileName);
this.contents.blt(bitmap, x, x, x, x, x, x);
};

よろしくお願い致します。

アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: 画像表示について

投稿記事by トリアコンタン » 2018年2月21日(水) 02:56

こんばんは!
ご推察の通り、未キャッシュの状態で画像を表示しようとして失敗しているパターンの可能性が高いです。
シンプルな解決法としては「this.contents.blt(bitmap, x, x, x, x, x, x);」の呼び出しをロードが完了するまで遅延させる方法です。

以下に例を示します。
addLoadListenerという関数を呼べば、bitmapのロード完了後に実行する処理をあらかじめスタックしておくことができます。
すでにbitmapのロードが完了していた場合は即座に処理が実行されます。

コード: 全て選択

    Window_Sample.prototype.loadSample = function() {
        var bitmap = ImageManager.loadSampleImage(FileName);
        bitmap.addLoadListener(function() {
            this.contents.blt(bitmap, x, x, x, x, x, x);
        }.bind(this));
    };
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
ichi
記事: 14
登録日時: 2018年2月12日(月) 00:10

Re: 画像表示について

投稿記事by ichi » 2018年2月21日(水) 23:03

>トリアコンタン様

返信ありがとうございます。
教えて頂いた方法で無事表示することができました。
ありがとうございました。

今後ともよろしくお願い致します。

“MV:質問” へ戻る