ページ 11

Cannot read "bitmap" of undefinedエラーが出ます

Posted: 2019年1月08日(火) 05:22
by ジャングル
戦闘開始直後にCannot read property "bitmap" of undefinedエラーが出る場合があります。

戦闘中は、次の処理を行っています。
・味方の立ち絵の表示(コモンイベントで)
・バトルステータスウィンドウにフェイス画像を表示(自前のプラグインで)

これは、画像が読み込まれる前に表示させようとしているということでしょうか。
ブラウザではイベントハンドラやリスナーなどでonloadイベントのコールバック関数を設定できますが、
ツクールではどういう書き方をすれば良いですか?

◆ブラウザの場合

コード: 全て選択

  var img = new Image();
  img.src = "image1.jpg";
  img.onload = function() {
    ctx.drawImage(img, 0, 0);
  }
◆自前のプラグイン

コード: 全て選択

(function() {
  var _Window_BattleStatus_initialize = Window_BattleStatus.prototype.initialize;
  Window_BattleStatus.prototype.initialize = function() {
    _Window_BattleStatus_initialize();
    
   // いきなり読み込んでいます。
    this.drawFace("face1", 0, 10, 40, 100, 100);

  };
  var _Window_BattleStatus_refresh = Window_BattleStatus.prototype.refresh;
  Window_BattleStatus.prototype.refresh = function() {
    _Window_BattleStatus_refresh();
    if ($gameSwitches.value(177)) {
      this.drawFace("face1", 0, 10, 40, 100, 100);
    } else {
      var new_hp = $gameActors.actor(7).hp;
      if (new_hp != $gameVariables.value(161)) {
        this.drawFace("face1_damage", 0, 10, 40, 100, 100);
      }
    }
  };
})();
この、いきなり読み込んでいるのが原因でしょうか?

※自分ではこのエラーを確認できていませんが、知り合いが「発生する」と言っていました。
デプロイしたものを渡したので、発生箇所の特定が出来ていません。

発生状況からこの辺りが原因なのではと思っていますが。
分かる方がおられたら宜しくお願いします。

Re: Cannot read "bitmap" of undefinedエラーが出ます

Posted: 2019年1月08日(火) 05:27
by しぐれん
initialize()のタイミングでいきなり書き込んでいるのが原因ですね。
このタイミングではbitmapが作成されていません。
drawItem()を改造しましょう。

Re: Cannot read "bitmap" of undefinedエラーが出ます

Posted: 2019年1月08日(火) 06:05
by ジャングル
済みません。
書き直しても変化が見られず、もう一度確認してみたところ、
このプラグインは使っておらずrpg_windows.jsに直書きしてました。

結構前に作ったゲームで忘れてました・・・。
(今はinitializeではなくrefreshとdrawGaugeAreaWithTpに書いていました)

確認してからまた質問します。

申し訳ありません。
drawItem()ありがとうございます。こちらに書いてみます。