【解決済み】場所移動後に画像を更新させたい

ま~くん
記事: 31
登録日時: 2017年7月31日(月) 15:36

【解決済み】場所移動後に画像を更新させたい

投稿記事by ま~くん » 2017年8月12日(土) 15:43

いつもお世話になっています。

イベントエディタを使って場所移動させています。
場所移動前(例:座標(0,0))に画像Aを表示させているのですが、
場所移動後(例:座標(0,1))に画像Bを表示させたいです。

今は下のようなスクリプトで画像A(background)を表示させていますけど、
場所移動すると画像Aのままです。

コード: 全て選択

(function() {

'use strict';

  var _Scene_Map_createAllWindows = Scene_Map.prototype.createAllWindows;
  Scene_Map.prototype.createAllWindows = function() {
    this._nekoWindow = new Window_neko();
    this.addWindow(this._nekoWindow)
    _Scene_Map_createAllWindows.call(this);
  };

  var _Scene_Map_update = Scene_Map.prototype.update;
  Scene_Map.prototype.update = function() {
    _Scene_Map_update.call(this);
    this._nekoWindow.setnekoImage();

  };

  function Window_neko() {
    this.initialize.apply(this, arguments);
  };

  Window_neko.prototype = Object.create(Window_Base.prototype);
  Window_neko.prototype.constructor = Window_neko;

  Window_neko.prototype.setnekoImage = function() {
    this.background();
  };

  Window_neko.prototype.background = function() {
    var nekoImage = new Sprite();
    nekoImage.bitmap = ImageManager.loadPicture('background');
    nekoImage.x = 0;
    nekoImage.y = 0;
    nekoImage.visible = true;
    this.addChild(nekoImage);
  };

})();


スクリプトはかなり略して書いてます。
場所移動後に画像B(newimage)を表示させたい場合は、どういうコードを書いたらいいでしょうか?
最後に編集したユーザー ま~くん on 2017年8月24日(木) 19:21 [ 編集 3 回目 ]

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

Re: 場所移動後に、画像を更新させたいにゃ~

投稿記事by トリアコンタン » 2017年8月12日(土) 16:00

こんにちは!
具体的に何がやりたいかにもよりますが、
場所移動前に任意のスイッチをONにしてから場所移動すれば以下のようにスイッチで分岐できるのではないでしょうか。

switchId:任意のスイッチ番号

コード: 全て選択

    Window_neko.prototype.background = function() {
        var nekoImage = new Sprite();
        if ($gameSwitches.value(switchId)) {
            nekoImage.bitmap = ImageManager.loadPicture('newImage');
        } else {
            nekoImage.bitmap = ImageManager.loadPicture('background');
        }
        nekoImage.x = 0;
        nekoImage.y = 0;
        nekoImage.visible = true;
        this.addChild(nekoImage);
    };
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
ま~くん
記事: 31
登録日時: 2017年7月31日(月) 15:36

Re: 場所移動後に画像を更新させたい

投稿記事by ま~くん » 2017年8月12日(土) 17:06

トリアコンタンさん、回答ありがとうございます。

うまく質問ができなくてすみません。
2Dマップを元に3Dダンジョンのようなものを作ろうとしています。
それで、「扉を開けて1歩前に進む」という動作を、イベントの場所移動で実行しようとしています。

場所移動前(扉の前)は正面に扉の画像が表示されるのですが、
場所移動後(扉は後ろ)でも場所移動前と同じ画像が表示されてしまいます。
つまり画像が更新?されてない状態です。

まずは教えてもらったスイッチを使う方法をためしてみます。
最後に編集したユーザー ま~くん on 2017年8月24日(木) 19:22 [ 編集 1 回目 ]
ま~くん
記事: 31
登録日時: 2017年7月31日(月) 15:36

Re: 場所移動後に画像を更新させたい

投稿記事by ま~くん » 2017年8月13日(日) 13:14

トリアコンタンさんから教えてもらったスイッチを使う方法ですが、うまく動作させられていません。

そして勘違いしてたことにも気がつきました。

コード: 全て選択

  var _Scene_Map_update = Scene_Map.prototype.update;
  Scene_Map.prototype.update = function() {
    _Scene_Map_update.call(this);
    this._nekoWindow.setnekoImage();

  };

このコードで場所移動したときも画像が更新されるものだと思っていました。
場所移動したときの場合にどういう画像を表示するか書かないといけないんですね。

場所移動した後、とかいう関数があるのでしょうか?
最後に編集したユーザー ま~くん on 2017年8月24日(木) 19:24 [ 編集 1 回目 ]
ま~くん
記事: 31
登録日時: 2017年7月31日(月) 15:36

Re: 場所移動後に画像を更新させたい

投稿記事by ま~くん » 2017年8月13日(日) 15:16

「場所移動が完了」したという関数が見つけられなかったのですが、
イベントが終了した?という関数っぽいのを見つけることができました。

コード: 全て選択

Game_Interpreter.prototype.terminate = function() {
    this._list = null;
    this._comments = '';
};

このコードに追記する形で画像を表示するようにコード書いてみたら、
場所移動後(扉を開ける)でも画像を更新させることができました。

うまく質問ができなくてお騒がせしました。
アドバイスくれたトリアコンタンさん、どうもありがとうございました。

“MV:質問” へ戻る