ページ 11

【解決済み】addChildした画像の更新について

Posted: 2017年8月19日(土) 23:04
by ま~くん
いつもお世話になってます。

http://rpgmaker-script-wiki.xyz/bitmap_ ... zamv.php#6
ここのサイトを参考に、3Dマップぽい画面を作るコードを書き直したんですけど、
addChildで追加した画像がうまく更新?できなくてこまっています。
ESCキーを押してメニュー画面を表示させてから、メニュー画面を消して3Dマップっぽい画面にもどると更新?されてる状態です。

コード: 全て選択

(function() {

'use strict';

  var _Spriteset_Map_createLowerLayer = Spriteset_Map.prototype.createLowerLayer;
  Spriteset_Map.prototype.createLowerLayer = function() {
    _Spriteset_Map_createLowerLayer.call(this);


  if ($gameMap.mapId() === 1) {
    var ThreeDMapImage_opening = new Sprite();
    ThreeDMapImage_opening.bitmap = ImageManager.loadPicture('opening');
    ThreeDMapImage_opening.x = 0;
    ThreeDMapImage_opening.y = 0;
    ThreeDMapImage_opening.z = 3;
    this._tilemap.addChild(ThreeDMapImage_opening);

  } else {

    var ThreeDMapImage_background = new Sprite();
    ThreeDMapImage_background.bitmap = ImageManager.loadPicture('background');
    ThreeDMapImage_background.x = 0;
    ThreeDMapImage_background.y = 0;
    ThreeDMapImage_background.z = 4.0;
    this._tilemap.addChild(ThreeDMapImage_background);

      var ThreeDMapImage_wall_center0 = new Sprite();
      ThreeDMapImage_wall_center0.bitmap = ImageManager.loadPicture('wall_center0');
      ThreeDMapImage_wall_center0.x = 97;
      ThreeDMapImage_wall_center0.y = 97;
    ThreeDMapImage_wall_center0.z = 4.5;
      this._tilemap.addChild(ThreeDMapImage_wall_center0);

      var ThreeDMapImage_wall_left0 = new Sprite();
      ThreeDMapImage_wall_left0.bitmap = ImageManager.loadPicture('wall_left0');
      ThreeDMapImage_wall_left0.x = 0;
      ThreeDMapImage_wall_left0.y = 3;
    ThreeDMapImage_wall_left0.z = 4.5;
      this._tilemap.addChild(ThreeDMapImage_wall_left0);

      var ThreeDMapImage_wall_right0 = new Sprite();
      ThreeDMapImage_wall_right0.bitmap = ImageManager.loadPicture('wall_right0');
      ThreeDMapImage_wall_right0.x = 526;
      ThreeDMapImage_wall_right0.y = 3;
    ThreeDMapImage_wall_right0.z = 4.5;
      this._tilemap.addChild(ThreeDMapImage_wall_right0);

   }; // if

  }; // Spriteset_Map.prototype.createLowerLayer




  var _Spriteset_Map_update = Spriteset_Map.prototype.update;
  Spriteset_Map.prototype.update = function() {
    _Spriteset_Map_update.call(this);

  if (Input.isTriggered('up') || Input.isTriggered('down') || Input.isTriggered('left') || Input.isTriggered('right')) {

    var ThreeDMapImage_background = new Sprite();
    ThreeDMapImage_background.bitmap = ImageManager.loadPicture('background');
    ThreeDMapImage_background.x = 0;
    ThreeDMapImage_background.y = 0;
    ThreeDMapImage_background.z = 5.0;
    this._tilemap.addChild(ThreeDMapImage_background);

      var ThreeDMapImage_wall_center0 = new Sprite();
      ThreeDMapImage_wall_center0.bitmap = ImageManager.loadPicture('wall_center0');
      ThreeDMapImage_wall_center0.x = 97;
      ThreeDMapImage_wall_center0.y = 97;
      ThreeDMapImage_wall_center0.z = 5.5;
      this._tilemap.addChild(ThreeDMapImage_wall_center0);

      this.removeChild(ThreeDMapImage_wall_center0);


      var ThreeDMapImage_wall_left0 = new Sprite();
      ThreeDMapImage_wall_left0.bitmap = ImageManager.loadPicture('wall_left0');
      ThreeDMapImage_wall_left0.x = 0;
      ThreeDMapImage_wall_left0.y = 3;
      ThreeDMapImage_wall_left0.z = 5.5;
      this._tilemap.addChild(ThreeDMapImage_wall_left0);

      var ThreeDMapImage_wall_right0 = new Sprite();
      ThreeDMapImage_wall_right0.bitmap = ImageManager.loadPicture('wall_right0');
      ThreeDMapImage_wall_right0.x = 526;
      ThreeDMapImage_wall_right0.y = 3;
      ThreeDMapImage_wall_right0.z = 5.5;
      this._tilemap.addChild(ThreeDMapImage_wall_right0);

   }; // if

  }; // Spriteset_Map.prototype.update

})();
Spriteset_Map.prototype.updateのところで、方向キーが押された段階で、
見える方向の3Dマップっぽい画像を更新させようとしています。
アドバイスいただけるとたすかります。

よろしくお願いします。

Re: addChildした画像の更新について教えてほしいにゃ~

Posted: 2017年8月23日(水) 21:52
by フトコロ
こんにちは。

恐らく、こちらのトピックが参考になるのではと思います。
http://tm.yumineko.com/viewtopic.php?f=56&t=3087

Re: addChildした画像の更新について教えてほしいにゃ~

Posted: 2017年8月23日(水) 22:33
by ま~くん
フトコロさん、アドバイスありがとうです。

トピック先と自分のコード確認してみます。

Re: addChildした画像の更新について

Posted: 2017年8月25日(金) 13:40
by ま~くん
フトコロさんに教えていただいたトピックを参考にしながら、
addChildというメソッドがあればクリアとかデリートとかいうメソッドもありそうかなという考えでコードを眺めていました。
そしたら、
 this.removeChild();
 this.removeChildren();
の二つのメソッドを見つけることができたので、そのまま使えるんじゃないかなぁと思い
画像をaddChildする前に記述しました。
「this.removeChild();」のほうはaddChildしたその画像の消去には使えたのですが、
複数の画像を消去させることはできませんでした。
(使い方がわからないだけかもしれませんが)
「this.removeChildren();」のほうはおそらくaddChildした要素を一度すべて取り除くものだと思い、
これを記述したところ望む動作をしてくれました。

いつも質問が下手でお騒がせしております。
フトコロさん、どうもありがとうございました。