[プラグイン/スクリプト]動的に画像を読み込む(中級者向け)
Posted: 2017年2月08日(水) 23:12
(ある程度プラグイン類の仕組みや作り方が分かる人向けの +α のTIPSとなります。ご了承ください)
……皆様、様々なプラグインやスクリプトで画像を読み込もうとした事があるかと思います。
その際に使われるのが、
等、画像ロード系です。
直後に続いて
或いは
等を使って描画しますが、これを使う際、「1度目に機能を実行(プラグインコマンド発動等)した際には何も表示されないが、一旦戻ってもう一度やり直すと表示される」と言う事態に遭遇した方はいないでしょうか?
これは、画像のロードが終わっていないのに、描画がもう開始されているというのが原因となります。
そこで以下のコード。
これが何をしているかと言いますと、0.1秒間隔でロードの完了の有否を確認し、完了した際に実描画コマンド
($gameScreen.showPicture(10, "logback", 0, 0, 0, 100, 100, 255, 0) 等)を実行する、と言うものです。
これを使えば、ロード未完による画像の表示失敗は回避できるかと思います。
質問があれば回答いたしますので、よろしくお願いいたします。
……皆様、様々なプラグインやスクリプトで画像を読み込もうとした事があるかと思います。
その際に使われるのが、
コード: 全て選択
ImageManager.loadPicture("me")
直後に続いて
コード: 全て選択
$gameScreen.showPicture(10, "logback", 0, 0, 0, 100, 100, 255, 0);
コード: 全て選択
this.contents.blt(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0);
これは、画像のロードが終わっていないのに、描画がもう開始されているというのが原因となります。
そこで以下のコード。
コード: 全て選択
ImageManager.loadPicture("me")
var waiter = setInterval(function(){ //定期的に繰り返されるIntervalイベント登録
if (ImageManager.isReady())
{
$gameScreen.showPicture(10, "logback", 0, 0, 0, 100, 100, 255, 0); //実際に描画するコマンド。ご自分の使用している物に合わせてお使いください(this.content.blt等)
clearInterval(waiter); //executeDrawFaceがtrueを返した場合、Interval消去
}
}, 100); //0.1秒間隔
($gameScreen.showPicture(10, "logback", 0, 0, 0, 100, 100, 255, 0) 等)を実行する、と言うものです。
これを使えば、ロード未完による画像の表示失敗は回避できるかと思います。
質問があれば回答いたしますので、よろしくお願いいたします。